特定类型的查询

优化count()查询

可以统计某个列值的数量,也可以统计行数。在统计列值时要求列值时非空的(不统计null)。

如果在count()的括号中制定了列或者列的表达式,则统计的就是这个表达式有值的结果数。当mysql确认括号内的表达式值不可能为空时,实际上就是在统计行数。最简单的就是当我们使用count(*)的时候,这种情况下通配符*并不会像我们猜想的那样扩展所有的列,实际上,它会忽略所有的列而直接统计所有的行数。

优化关联查询

1.确保on或者using子句中的列上有索引,一般来说只需要在关联顺序中的第二个表的相应列上创建索引

2.确保任何group by和order by中的表达式只涉及到一个表中的列,这样mysql才有可能使用索引来优化这个过程。

优化子查询

关于子查询优化最重要的优化建议就是尽可能使用关联查询代替。

limit

在偏移量非常大的时候,比如limit1000,20这样的查询,这时mysql需要查询10020条记录然后只返回20条。前面的10000条记录都将被抛弃,这样代价非常高

最简单的办法是使用覆盖索引。

记录“数千万”通过where缩小扫描范围

猜你喜欢

转载自www.cnblogs.com/lccsblog/p/12812223.html