最近研究了一条存储过程,执行的时候速度超慢,便查了一下怎么分析,怎样看懂执行计划。
我用的工具是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]聚集索引查找(最快),直接根据聚集索引获取记录
简单记录一下给自己留个底