SQL之执行计划
2017-04-27 16:32
127 查看
最近研究了一条存储过程,执行的时候速度超慢,便查了一下怎么分析,怎样看懂执行计划。
我用的工具是dbvisualizer
可以直接运行sql语句:select * into tablelin from party_customer(随便写的一条语句),之后会出现如下的结果
看operation时根据梯形从右至左开始看,如果存在并列的,便从上往下看(例如先看table
scan->top->table insert(insert)->select into),分析cost值比较大的,一般较大的就会存在问题,我所研究的一条存储过程大部分的cost值在10~20左右,单单有一条1900多,很明显。
分析时有一些经验可以起到一些帮助
[Table Scan] 表扫描(最慢),对表记录逐行进行检查
[Clustered Index Scan]聚集索引扫描(较慢),按聚集索引对记录逐行进行检查
[Index Scan]索引扫描(普通),根据索引滤出部分数据再进行逐行检查
[Index Seek]索引查找(较快),根据索引定位记录所在位置再取出记录
[Clustered Index Seek]聚集索引查找(最快),直接根据聚集索引获取记录
简单记录一下给自己留个底
我用的工具是dbvisualizer
可以直接运行sql语句:select * into tablelin from party_customer(随便写的一条语句),之后会出现如下的结果
看operation时根据梯形从右至左开始看,如果存在并列的,便从上往下看(例如先看table
scan->top->table insert(insert)->select into),分析cost值比较大的,一般较大的就会存在问题,我所研究的一条存储过程大部分的cost值在10~20左右,单单有一条1900多,很明显。
分析时有一些经验可以起到一些帮助
[Table Scan] 表扫描(最慢),对表记录逐行进行检查
[Clustered Index Scan]聚集索引扫描(较慢),按聚集索引对记录逐行进行检查
[Index Scan]索引扫描(普通),根据索引滤出部分数据再进行逐行检查
[Index Seek]索引查找(较快),根据索引定位记录所在位置再取出记录
[Clustered Index Seek]聚集索引查找(最快),直接根据聚集索引获取记录
简单记录一下给自己留个底
相关文章推荐
- 通过分析SQL语句的执行计划优化SQL
- 通过分析SQL语句的执行计划优化SQL (三)
- SAP 查询跟踪监控,sql 执行计划
- [转]通过分析SQL语句的执行计划优化SQL (七)[3]
- [转]通过分析SQL语句的执行计划优化SQL (七)[1]
- 如何启用AutoTrace 查看SQL执行计划
- [转]通过分析SQL语句的执行计划优化SQL
- 是否会成为问题——Linq to Sql的执行可能无法复用查询计划
- 利用statspack来获取生成环境中top SQL及其执行计划
- [转]通过分析SQL语句的执行计划优化SQL (七)[5]
- 通过分析SQL语句的执行计划优化SQL (四)
- 通过分析SQL语句的执行计划优化SQL (九)
- 通过分析SQL语句的执行计划优化SQL (八)
- 是否会成为问题——Linq to Sql的执行可能无法复用查询计划
- 关于SQL的执行计划
- 通过分析SQL语句的执行计划优化SQL (二)
- 通过分析SQL语句的执行计划优化SQL (七)
- SQL语句的执行计划和暗示
- 关于SQL的执行计划
- SQL语句的执行计划和暗示