一,MS SQL SERVER中查看执行计划,
1,选中目标SQL语句;
2,按 CTRL + L 或 点击工具栏中的执行计划按钮;
3,在执行计划标签结果中,鼠标放到目标对象上,如果含有“Clustered Index Scan”则是全表扫描;
二,MySql中执行计划查看;
windows > cmd > 进入mysql >
explain SQL语句(例如select... from... where...)
或者在Mysql客户(如Navicat)连通mysql服务器之后:
explain SQL语句(例如select... from... where...)
查看 explain 执行计划结果,
1,type列,该列显示了连接使用哪种类别,有无使用索引;
从最好到最差的连接类型为 const,eq_reg,ref,range(使用索引)、
index(与ALL同,除了只有索引树被扫描,比ALL快)和ALL(全表扫描)
2,possible_keys 列列出了可能使用的索引;
3,key列列出正在使用的索引;
三,Oracle中查看执行计划,
在SQL*PLUS或PL/SQL Developer中执行如下命令;
EXPLAIN PLAN FOR SQL语句(例如select...)
结果可以看到查询在执行时哪些表是通过 index 进行查询,
有 index 开头的就表示使用了索引,例如:
index uniquue scan 表示使用了索引,
TABLE FULL SCAN 表示进行全表扫描;
SQL查询explain查看执行计划,一般一个表索引不应超过5个为好,如果索引过多查询执行效率会降低,速度会变慢,大量访问时出问题的概率会增大;
各种查询应尽量通过索引这样速度会快点,越有利高访问量;
增加或修改比较频繁的列不宜建立索引,因频繁重建索引消耗DB资源比较大,应在改动比较少而查询比较频繁的列上建立索引;
个人简单总结,欢迎拍照讨论...