1.比较运算能用 = 就不用 <>
2.明知就只有一条查询结果就使用 limit 1,这样可以避免全表扫描。
3.建表时为列选择合适的数据类型。
4.使用 union all 代替 union,如果结果集允许重复的话。union 会对结果集去重,效率很低。
5.为获得相同结果集的多次执行,请保持 SQL 语句前后一致。
比如第一次查询 select * from u_user where name = '张三' and age = '21',那么第二次查询请保持 nameage 的查询顺序不便,这样可以使用查询缓存,提高查询效率。
6.劲量避免 select *
7.使用 Explain 关键字去查看执行计划,根据执行计划对 SQL 进行优化。
8.合理使用 inexists 关键字,exists 适合外表小而内表大的情况。而 not innot exists 更推荐使用 not exists
9.避免在 where 字句中对字段进行 null 值判断,对 null 值判断将会进行全表扫描。
10.不建议使用 % 前缀模糊查询,这种查询会导致索引失效而进行全表扫描。可以使用 like name%。但是如果需要进行前缀模糊查询的时候,我们可以对需要模糊查询的列添加全文索引。
11.劲量使用小表去驱动大表,比如 A left join B 那么 A 表最小是小表。