有关DB的索引是否使用,表扫描方式,执行计划问题

一,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资源比较大,应在改动比较少而查询比较频繁的列上建立索引

个人简单总结,欢迎拍照讨论...

猜你喜欢

转载自blog.csdn.net/shenzhenNBA/article/details/86485388