会导致全表扫描的语句
避免使用的语句 | 解决方式 |
---|---|
不等于条件:!、<> | 先做数据筛选,减少数据量,再做查询 |
null判断:is null | 在此列设置默认值0,则无null |
or条件 | 通过union all的方式,对两个子查询数据进行合并 |
模糊查询like | 只有左匹配才可以走索引(如like ‘c%’) |
in和not in | 尽量可以使用between in。用一个范围值 |
where表达式操作 | 不要在where条件使用表达式 |
where子句函数操作 | 尝试用非函数方式替代 |
其它优化方式:
1、字段类型尽量要小。查询效率更高
2、不要select *。
3、单表的索引数最好不要超过6个,否则update、insert效率会变慢
4、能用数值类型就不要用字符串类型,字符串的查询效率比数值类型慢。
5、在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert
6、