MSSQLSERVER执行计划详解

--1、取前10条-性能相同

select top 10 * from ServiceInvoke; --创建时间聚集索引扫描
select top 10 * from AdoLog; --主键ID聚集索引扫描

--2、根据聚集索引排序-性能提升
--创建时间聚集索引扫描,但是时间索引是已排序的,所以不需要再排序
select top 10 * from ServiceInvoke order by CreateTime desc;
--主键ID聚集索引全表扫描,然后根据时间字段排序
select top 10 * from AdoLog order by CreateTime desc;

--3、根据非索引排序-性能相同
--创建时间聚集索引扫描,然后根据排序字段排序
select top 10 * from ServiceInvoke order by IsDeleted desc;
--主键ID聚集索引扫码,然后根据排序字段排序
select top 10 * from AdoLog order by Message desc;

--4、根据聚集索引筛选,性能提升
--创建时间聚集索引查找
select top 10 * from ServiceInvoke where CreateTime > '2018-12-18';
--主键ID聚集索引扫描
select top 10 * from AdoLog where CreateTime > '2018-12-18' ;

--5、根据聚集索引筛选排序-性能提升
--创建时间聚集索引查找
select top 10 * from ServiceInvoke where CreateTime > '2018-12-18' order by CreateTime desc;
--主键ID聚集索引扫描
select top 10 * from AdoLog a where CreateTime > '2018-12-18' order by CreateTime desc;

--6、普通字段筛选聚集索引字段排序-对于排序性能消耗较大的情况下性能提升
--创建时间聚集索引扫描,然后条件过滤,但是不用排序
select top 10 * from ServiceInvoke where OutParam like '%330723196704072361%' order by CreateTime desc;
--主键ID聚集索引扫描,然后排序
select top 10 * from AdoLog where Message like '%330723196704072361%' order by CreateTime desc;

--7、多字段筛选聚集索引排序-性能提升
--创建时间聚集索引查找,然后条件过滤,但是不用排序
select top 10 * from ServiceInvoke where OutParam like '%330723196704072361%' and CreateTime > '2018-12-18' order by CreateTime desc;
--主键ID聚集索引扫描,然后排序
select top 10 * from AdoLog a where Message like '%330723196704072361%' and CreateTime > '2018-12-18' order by CreateTime desc;

--8、多字段搜索普通字段排序-性能提升
--创建时间聚集索引查找,然后条件过滤,排序
select top 10 * from ServiceInvoke where OutParam like '%330723196704072361%' and CreateTime > '2018-12-18' order by OutParam desc;
--主键ID聚集啥事扫描,排序
select top 10 * from AdoLog a where Message like '%330723196704072361%' and CreateTime > '2018-12-18' order by Message desc;

--9、统计行数
--主键非聚集索引扫描
select count(*) from ServiceInvoke
--主键非聚集索引扫描,但是查找行数明细减少,性能提升
select count(*) from ServiceInvoke s where s.CreateTime > '2018-12-19'
--创建时间聚集索引扫描,然后过滤
select count(*) from ServiceInvoke s where s.InputParam like '%152%'
--创建时间聚集索引查找,然后过滤-性能提升
select count(*) from ServiceInvoke s where s.CreateTime > '2018-12-19' and s.InputParam like '%152%'

--10、使用聚集索引和强制使用非聚集索引-根据聚合索引字段(创建时间)筛选出来的数据越少,查询开销提升越明显
--创建时间聚合索引查找
select count(*) from ServiceInvoke s where s.CreateTime > '2018-12-19' and s.InputParam like '%152%'
--主键ID非聚合索引扫描
select count(*) from ServiceInvoke s with(index=[PK_dbo.ServiceInvoke]) where s.CreateTime > '2018-12-19' and s.InputParam like '%152%'

SqlServer执行计划的更多相关文章

  1. SQLSERVER执行计划详解

    序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...

  2. 看懂SqlServer执行计划

    在园子看到一篇SQLServer关于查询计划的好文,激动啊,特转载.原文出自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.htm ...

  3. SqlServer 执行计划及Sql查询优化初探

    网上的SQL优化的文章实在是很多,说实在的,我也曾经到处找这样的文章,什么不要使用IN了,什么OR了,什么AND了,很多很多,还有很多人拿出仅几S甚至几MS的时间差的例子来证明着什么(有点可笑),让许 ...

  4. SQLServer 执行计划

    http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html#_label0   http://www.jb51.net/article ...

  5. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

    我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...

  6. sqlser 2005 使用执行计划来优化你的sql

    一:sqlserver 执行计划介绍    sqlserver 执行计是在sqlser manager studio 工具中打开,是检查一条sql执行效率的工具.建议配合SET STATISTICS ...

  7. 浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用

    我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划, 在生成执行计划之前会去缓存中查找执行计划 如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会 ...

  8. Sql Server之旅——第十一站 简单说说sqlserver的执行计划

    我们知道sql在底层的执行给我们上层人员开了一个窗口,那就是执行计划,有了执行计划之后,我们就清楚了那些烂sql是怎么执行的,这样 就可以方便的找到sql的缺陷和优化点. 一:执行计划生成过程 说到执 ...

  9. SQLServer查询执行计划分析 - 案例

    SQLServer查询执行计划分析 - 案例 http://pan.baidu.com/s/1pJ0gLjP 包括学习笔记.书.样例库

随机推荐

  1. ddraw 视频下绘图 不闪烁的方法

    我们假设是在在RGB视频上绘图(直线,矩形等),一般採用双缓冲区继续,使用内存MemoryDC,来实现画的图形在视频上显示不闪烁的功能,可是我们知道用RGB显示视频都是使用GDI进行渲染,这样非常耗C ...

  2. Matlab Tricks(二十六)—— 置乱(随机化)与恢复(shuffle/permutation & restore)

    x = 1:10; n = length(x); perm = randperm(n); x_perm = x(perm); % x_perm 表示置乱后的结果 x_ori(perm) = x_per ...

  3. python实现简易采集爬虫

    #!/usr/bin/python #-*-coding:utf-8-*- # 简易采集爬虫 # 1.采集Yahoo!Answers,parseData函数修改一下,可以采集任何网站 # 2.需要sq ...

  4. urllib2使用总结

    keywords: urllib2,BeautifulSoup,cookielib 题外话: 小弟是编程爱好者,各位看官轻拍. 最近在使用urllib2抓取网页内容,在学习的过程中也查阅了不少资料,并 ...

  5. c#调api串口通讯

    原文:c#调api串口通讯 在调试ICU通信设备的时候,由于串口通信老出现故障,所以就怀疑CF实现的SerialPort类是否有问题,所以最后决定用纯API函数实现串口读写. 先从网上搜索相关代码(关 ...

  6. 阿凡达是脸,教你的脸在线(包括URL和使用)

    官方网站:http://www.mcdonalds.at/avatar/ 英文版本号:lid=finland" target="_blank">http://www ...

  7. (转)react 使用 ref 报错 ,[eslint] Using string literals in ref attributes is deprecated. (react/no-string-refs)

    原文地址:https://www.cnblogs.com/gangerdai/p/7396226.html react 项目中给指定元素加事件,使用到 react 的 ref 属性,Eslink 报错 ...

  8. C# 元组、匿名对象、ref&out

    元组 private (int number,int newNumber) CaculateByTuple(int number) { return (number: number, newNumbe ...

  9. sql Left right join 多表 注意表的连接顺序

    多表左/右连接,表的连接顺序也可以影响查询速度 左连接时,应该把小表放在前面连接例子:A.B.C三表左连接情况1:A先和B连接,得到100条记录100条记录再和C左连接情况2:A先和C连接,得到50条 ...

  10. Apache Cordova for ios环境配置

    原文:Apache Cordova for ios环境配置 1.安装针对iOS的工具 https://technet.microsoft.com/ZH-cn/library/dn757054.aspx ...