脚本mssql优化查询

mssql  时间:2021-01-21  阅读:()

MSSQL优化查询

Tracy.T.Zhang1 使用“执行计划”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

2 比较执行时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

3 查看IO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8

4 提升效率的几点原则. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

5 简单应用——比较两种分页算法的效率. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

5.1 执行计划比较. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

5.2 运行时间比较. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

5.3 IO比较. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

公司的数据库属于具有海量数据的OLTP系统数据库所以对于效率的要求很高。很多时候脚本被DBA发回来也是因为这方面的原因。下面就结合实际工作讲一下我对SQL脚本优化的一些经验。

网上有很多关于数据库脚本优化的经验文章公司也有SQL脚本规范这些都写得很好都是前人积累的优秀经验但是一条条死记是比较辛苦一点的而且超出提到的范围之后也不一定能发现我们的脚本存在问题就更不用说去修改了。下面就说一下怎样利用MSSQL现有的工具发现我们脚本中的问题。

1使用“执行计划”

MSSQL提供了一个比较好的工具执行计划通过这个工具我们至少可以知道一下两件事情

1、 几个返回结果等效的脚本究竟哪一个效率更高

2、在一个脚本中哪一个地方消耗了最多的资源

就以我曾经做过的一个脚本为例来说明吧。这个脚本里面有一段类似这样的语句

按快捷键Ctr l+L调出预计的执行计划如图

我们发现消耗成本最大的是图中用红色边框标出来的那一部分将鼠标停留在上面进一步查看详细信息如图

得知影响效率的应该是这一句

找到原因了我们开始尝试修改改成了这样的脚本

用预计的执行计划对比一下两条语句如图

可以看到原来的脚本执行成本占总成本的84.30%经过改进后的脚本执行成本占总成本的15.70%经过改进后的脚本效率明显提高。

还可不可以有进一步的改善呢我们注意到数据库里有这样一个视图dbo.table_arcash可以替换子查询a于是有了第二次改进的脚本

现在再来看一下预计的执行计划

可以看到原来的脚本执行成本占总成本的73.12%第一次改进后的脚本占13.62%第二次改进的脚本占13.26%。说明经过第二次改进效率又有提升。

2比较执行时间

目前我们只是直观的从执行计划上看到提升的百分比但是具体到执行时间上有什么具体的提升呢这就需要引入第二个知识点查看执行时间。

很多人可能会说这还不简单查询分析器的状态栏每次都会显示执行时间。对的不

过这里只能看出到秒的差异而且大部分时候是看不出来有什么差异的。

我们只需要把脚本放到这样两条语句之间就可以看到细化到毫秒的差异了

下面我们把以上提到的三个脚本放进来执行以下看看时间上有什么差异结果如下

可以看到执行时间上面第二和第三个脚本比第一个脚本提升了很多。究竟为什么会有这么大的提升呢这就要引入第三个知识点查看IO

3查看IO

我们只需要把脚本放到这样两条语句之间就可以看到IO情况了

下面我们把以上提到的三个脚本放进来执行以下看看IO上有什么差异结果如下

我们主要观察logical reads的值越小说明脚本效率越高三个脚本差别最大的地方已经用黄色标出。从1155到105的变化足以说明效率为什么会有显著提升了。

4提升效率的几点原则

1) 减少IO次数 IO的次数越少效率将会越高。

2) 避免全表扫描。如果发现全表扫描看看是否有索引可以使用如果没有可以添加索引。

3) 如果数据量比较大在查询要用到的列上建索引如果数据量小不建索引的效率更高。

4) 先筛选再联结直接用符合条件的100条数据和10000条数据联接总比10000条数据

和10000条数据联结再选出符合条件的100条效率要高。

5简单应用——比较两种分页算法的效率

两种常用的分页算法NOT IN+TOP和>MAX+TOP下面作简单比较

BuyVM迈阿密KVM上线,AMD Ryzen 3900X+NVMe硬盘$2/月起

BuyVM在昨天宣布上线了第四个数据中心产品:迈阿密,基于KVM架构的VPS主机,采用AMD Ryzen 3900X CPU,DDR4内存,NVMe硬盘,1Gbps带宽,不限制流量方式,最低$2/月起,支持Linux或者Windows操作系统。这是一家成立于2010年的国外主机商,提供基于KVM架构的VPS产品,数据中心除了新上的迈阿密外还包括美国拉斯维加斯、新泽西和卢森堡等,主机均为1Gbps带...

3C云1核1G 9.9元 4核4G 16元 美国Cera 2核4G 24元

3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...

DogYun春节优惠:动态云7折,经典云8折,独立服务器月省100元,充100送10元

传统农历新年将至,国人主机商DogYun(狗云)发来了虎年春节优惠活动,1月31日-2月6日活动期间使用优惠码新开动态云7折,经典云8折,新开独立服务器可立减100元/月;使用优惠码新开香港独立服务器优惠100元,并次月免费;活动期间单笔充值每满100元赠送10元,还可以参与幸运大转盘每日抽取5折码,流量,余额等奖品;商家限量推出一款年付特价套餐,共100台,每个用户限1台,香港VPS年付199元...

mssql为你推荐
p图软件哪个好用手机p图软件那个好迈腾和帕萨特哪个好迈腾和帕萨特哪个好江门旅游景点哪个好玩的地方江门有什么地方好玩的?浮动利率和固定利率哪个好房贷须知:固定还是浮动利率好网校哪个好哪个网校比较好?美国国际东西方大学现在去哪国留学最有前途?空间登录页面怎样用网页登录到自己的QQ空间?51个人空间登录我在电脑上用的是Q号登录51个人空间,在手机上怎么却不能用Q号登录51个人空间了yy空间登录玩空间游戏怎样1直是正在登录中如何增加百度收录如何提高百度的收录数量
如何注册域名 安徽双线服务器租用 新秒杀 a2hosting 5折 安云加速器 isatap 68.168.16.150 java空间 英文站群 股票老左 卡巴斯基免费试用 网游服务器 国外ip加速器 linux使用教程 域名与空间 网通服务器 云营销系统 申请免费空间 电信主机托管 更多