• SqlServer执行计划


    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%'

  • 相关阅读:
    网盘无法单独同步某个文件的解决方法
    编译cubieboard android 源码过程详解之(七):lichee build
    cb-A10系统优化之(一):去除自启动软件
    ubuntu 使用
    JS——数组中push对象,覆盖问题,每次都创建一个新的对象
    Node.js中npm常用命令大全
    Vue style里面使用@import引入外部css, 作用域是全局的解决方案
    5大浏览器内核和主要代表
    IE调试网页之三:使用 F12 工具控制台查看错误和状态 (Windows)
    div拖拽到iframe上方 导致 缩放和拖拽的不平滑和鼠标事件未放开 解决方法
  • 原文地址:https://www.cnblogs.com/zhanhengzong/p/10137693.html
Copyright © 2020-2023  润新知