Optimization

20个SQL优化方法

Sql, Optimization, SQL Optimization, 优化, Sql优化

查询SQL尽量不要使用select *,而是具体字段 # 反例 SELECT * FROM user 正例 SELECT id,username,tel FROM user 理由 节省资源、减少网络开销。 可能用到覆盖索引,减少回表,提高查询效率。 注意:为节省时间,下面的样例字段都用*代替了。 避免在where子句中使用 or 来连接条件 # 反例 SELECT * FROM user WHERE id=1 OR salary=5000 正例 使用union all SELECT * FROM user WHERE id=1 UNION ALL SELECT * FROM user WHERE salary=5000 - 分开两条SQL写 SELECT * FROM user WHERE id=1 SELECT * FROM user WHERE salary=5000 理由 使用or可能会使索引失效,从而全表扫描; 对于or没有索引的salary这种情况,假设它走了id的索引,但是走到salary查询条件时,它还得全表扫描; 也就是说整个过程需要三步:全表扫描+索引扫描+合并。如果它一开始就走全表扫描,直接一遍扫描就搞定; 虽然mysql是有优化器的,出于效率与成本考虑,遇到or条件,索引还是可能失效的; 尽量使用数值替代字符串类型 # 正例 ...