SQL优化方案
- 注意具有索引列的查询条件,避免造成索引失效(具体看如下的索引失效规则)
- 对于数据重复多的列,无需建立索引
- 索引并非越多越好,索引越多,对增删改的速度就会越慢
- select 结果中,避免使用*符号,只返回有用的字段
使查询放弃索引进行全表搜索的操作
- where语句中使用 != 和 <>
- 使用 null判断,例如: where name is null / name is not null
- 索引列数据中包含 null,索引失效
- 在范围条件语句后面的列索引都会失效;例如 where name = ‘Kellan’ and age > 10 and sex = ‘男’; 其中只有name字段的索引有效
- 模糊查询中,将%放在字段前面,则索引失效;即 where name like ‘%Kellan’ . 与 where name like ‘Kellan%’。前者索引失效
- 避免直接对索引字段进行 计算与使用函数;都会使索引失效
- 避免使用 or条件判断,索引会失效,进行全表搜索; 可以使用 union代替
- in 和 not in要慎用,否则会导致全表搜索; 如果是连续的值,可是使用between代替;或者可以先使用子查询,降低搜索的数据量,再使用in 和 not in; 比如: select * from (子查询) where id in (1,2,3);