你必须知道的Microsoft SQL Server一

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

不知道为什么我Win10环境下安装的Sqlserver2012,智能提示的功能基本上没有用,没办法,我还是选择安装插件SQL Prompt 5吧。下载地址:http://www.uzzf.com/soft/95310.html

有人反映SQL Prompt 5 书写SQL代码时出现双重提示(Prompt和Transact-SQL IntelliSense),觉得很是别扭,可以在设置中发现关闭Transact-SQL IntelliSense。

具体设置步骤:“工具”->“选项”->在选项窗口中找到“文本编辑器”->“Transact-SQL”->“IntelliSense”->取消右侧“启用IntelliSense(E)”前面的勾,重新开启MS SQL Manage Studio即可

下面为配置图:

以Northwind数据库为例。

SQL Server 数据库动态索引查找原理——索引查找原理

所谓的动态索引查找就是SQL Server在执行语句的时候,才格式化查询条件,然后根据查询条件的不同自动的去匹配所有项,从而达到性能提升的目的。

假设我们执行如下SQL语句:

select * from [dbo].[Orders] where ShipPostalCode in('90110','01307');

我们来查看SQL执行计划,这里有两种方式。

方式一是直接在SQL语句前面输入如下脚步:

set showplan_text on
GO

方式二,查询——查询选项——高级

按F5执行SQL语句,运行结果如下所示。

文本内容如下:

  |--Clustered Index Scan(OBJECT:([Northwind].[dbo].[Orders].[PK_Orders]), WHERE:([Northwind].[dbo].[Orders].[ShipPostalCode]=N'01307' OR [Northwind].[dbo].[Orders].[ShipPostalCode]=N'90110'))

点中工具栏的“包括实际的执行计划”按钮,可以查看执行计划如下图所示。

我们会看到,执行计划进行了索引扫描,索引扫描是SQL Server最优的查询方式。实际上,Sqlserver 自动将我们之前写的SQL语句中的IN操作直接修改为了OR查询操作。

 我们再来看如下SQL:

复制代码
use Northwind
GO

DECLARE @p1 NVARCHAR(20),@p2 NVARCHAR(20)
SELECT @p1=N'90110', @p2=N'01307'

SELECT * FROM dbo.Orders WHERE ShipPostalCode IN(@p1,@p2)
复制代码

查看执行计划其执行结果和之前的SQL语句一模一样。

  |--Clustered Index Scan(OBJECT:([Northwind].[dbo].[Orders].[PK_Orders]), WHERE:([Northwind].[dbo].[Orders].[ShipPostalCode]=[@p2] OR [Northwind].[dbo].[Orders].[ShipPostalCode]=[@p1]))

在Sqlserver2012之前,其执行计划是不一样的,这是因为Sqlserver2012自动帮我们做了优化。

所以有时候,我们会发现,即便我们的SQL语句写得很烂,但是却发现怎么执行起来一点都不卡啊,那是因为sqlserver的执行计划,进行了自动优化,但是我们还是要知道其原理,尽量写高性能的SQL语句。

本文转自邹琼俊博客园博客,原文链接:http://www.cnblogs.com/jiekzou/p/6105023.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
SQL
简单练习Microsoft SQL Server MERGE同步两个表
【10月更文挑战第13天】本文介绍了在Microsoft SQL Server中使用`MERGE`语句同步两个表的步骤。首先创建源表`SourceTable`和目标表`TargetTable`并分别插入数据,然后通过`MERGE`语句根据ID匹配行,实现更新、插入和删除操作,最后验证同步结果。此方法可根据需求调整以适应不同场景。
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
389 3
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
115 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
62 6
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
390 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
501 0
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
319 3
|
4月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
下一篇
无影云桌面