1. 避免在 where 子句中使用!= 和 <> 进行不等于判断,这样会导致放弃索引进行全表扫描。
2. 避免在 where 子句中使用 null 或空值判断,会导致放弃索引进行全表扫描,尽量设置字段为 not null。
3. 避免在 where 子句中使用参数,会导致全表扫描
4. 避免在 where 子句中对字段及进行表达式或者函数操作,会导致存储引擎放弃索引进而全表扫描
5. 尽量使用 union all 代替 or,因为如果两个字段中有一个没有索引的话,引擎就会放弃索引进行全表扫描。
6. 尽量减少子查询,可以使用关联查询(left join,right join,inner join)替代子查询。
7. 尽量使用 exists、not exists 替代 in 或者 not in,因为会进行全表扫描。
8. 可以在 where 和 order by 涉及的列建立索引,从来提高查询效率。
9. 避免使用 SELECT *,按需求查找相关列。