MySQL——SQL优化

本文将介绍MySQL优化常用的一些手段。

优化COUNT()查询

COUNT函数的作用:

  • 统计某个列的数量
  • 统计行数

统计列值的时候要求列值是非空的。列值为空的列将不会被统计到。

当MySQL确认括号内的表达式值不可能为空时,实际上是在统计行数。

优化关联查询

优点建议:

  • 确保关联查询的列上有索引。通常只需要在关联顺序中的第二个表的相应列创建索引。
  • 确保任何分组和排序的表达式中只涉及一个表中的列。

优化子查询

优化建议

  • 尽可能使用关联查询代替。

优化group和distinct

优化建议:

  • 如果需要对关联查询表中的某个列做分组,通常采用主表的标识列分组效率会更高

优化Limit分页

偏移量大的时候,查询效率会很糟糕。

优化建议:

  • 尽量使用索引覆盖扫描,再做关联查询返回所需的列。

例如:

原SQL:

select file_id,description from sakila.film order by title Limit 50,5

改写之后:

select file_id,description from sakila.film  
inner join 
(select file_id from sakila.film order by title Limit 50,5) as lim
using(file_id ) 

优化UNION查询

优化建议:

  • 除非确定要消除重复的行,否则就一定要使用UNION ALL。如果没有ALL关键字,会给临时表加上distinct选项,导致对整个临时表数据做唯一性检查,代价非常高。

你可能感兴趣的:(MySQL)