博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你必须知道的Microsoft SQL Server一
阅读量:6964 次
发布时间:2019-06-27

本文共 1514 字,大约阅读时间需要 5 分钟。

不知道为什么我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 onGO

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

按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 NorthwindGODECLARE @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://kdwsl.baihongyu.com/

你可能感兴趣的文章
手机PDF文件怎么压缩得更小,PDF文件如何压缩?
查看>>
超声波清洗机对人体有辐射,有伤害吗?
查看>>
区块链成多地政府工作报告新热词
查看>>
论职场沟通的重要性
查看>>
velocity模板中后台返回html,前端无法跳转页面
查看>>
AJPFX:如何保证对象唯一性呢?
查看>>
天禹智控--现场标准气体如何使用?
查看>>
CSS3:border-radius隐藏的威力
查看>>
springMVC 返回类型选择 以及 SpringMVC中model,modelMap
查看>>
存储型XSS进阶 [猜测规则,利用Flash addCallback构造XSS]
查看>>
[Openshift Origin 3]OpenShift 3 : 基于Docker的私有PaaS平台
查看>>
php的执行时间啊
查看>>
jetty/eclipse:A full JDK (not just JRE) is require
查看>>
linux awk命令详解
查看>>
angular中将$sce服务封装成过滤器
查看>>
html 可拖动宽度的div方法
查看>>
openvz 双网卡桥接
查看>>
CSS3前端开发中需要用到的变换矩阵
查看>>
pinpoint 1.6.1 安装
查看>>
javax.net.ssl.SSLHandshakeException(Cas导入证书)
查看>>