一、有索引而未被用到:
1、Like的参数以通配符%开头时,数据库引擎会放弃使用索引而进行全表扫描。
以通配符开头的sql语句,是全表扫描,没有使用到索引,不建议使用:
explain select * from teacher where tname like '%10';
不以通配符开头的sql语句,使用到了索引,是有范围的查找:
explain select * from teacher where tname like '10%';
2、where条件不符合最左原则:
假设有这样一个索引——(a,b,c),必须用到第一个字段a,才会走索引。否则如select * from table where b=’b’ and c=’c’,就不会使用到索引。
3、索引列使用 != 或 操作符时,数据库引擎会放弃使用索引而进行全表扫描。使用>或
4、在 where 子句中对索引列进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。
5、在where子句中对索引列进行null值判断,引擎放弃使用索引而进行全表扫描。
如: 低效:select * from teacher where note is null ;
可以在note 上设置默认值0,确保表中note 列没有null值,然后这样查询:
高效:select * from teacher where note= 0;
6、在where子句中使用or来连接条件,导致引擎放弃使用索引而进行全表扫描。
如: 低效:select * from teacher where note = 12 or note = 122;
可以用下面这样的查询代替上面的 or 查询:
高效:select * from teacher where note = 12 union all select * from teacher where note = 122;
或者:select * from teacher where note in (12, 122);
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: C语言中这么骚的退出程序方式你知道几个?前言1、main函数是最先执行和最后执行的函数吗?2、花式退出3、总结
前言 在本篇文章当中主要给大家介绍C语言当中一些不常用的特性,比如在main函数之前和之后设置我们想要执行的函数,以及各种花式退出程序的方式。 1、main函数是最先执行和最后执行的函数吗? 1)C语言构造和析构函数 通常我们在写C程序的时候都是从main函数…