- SQL查询优化
1)不在索引列上上使用表达式计算;
2)不要再索引列上使用 is null 和 is not null;
3)避免子查询,用 exists 替代 in、用 not exists 代替 not in;
4)尽量避免全表扫描,首先应考虑在where 及 order by 涉及的列上建立索引;
5)不要 select * ;
6)尽量别使用外键;
7)索引字段不要使用范围查询(<,>,between,like);
8)尽量避免大事务操作,提高系统并发能力;
9)where 判断 null影响效率,尽量给字段一个默认值;
10)可以使用 explain 命令进行分析; - MySQL 不建议默认 null 值原因
1)值比较比较复杂;
2)索引的效率会下降很多,因为它们使得索引、索引的统计信息以及比较运算更加复杂;
3)not in、!= 等负向条件查询在有 null 值的情况下返回永远为空结果,查询容易出错; - MySQL 尽量选择最小数据类型的原因
因为最小的数据类型会占用更小的磁盘、内存、CPU缓存和周期,所以也会更快。 - MySQL 模糊查询会导致索引失效
用 like 模糊查询时:
1)% 和 _ 通配符放在前面会导致索引失效;
2)% 和 _ 通配符放在后面不会导致索引失效;