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