mysql count 优化

分页时,我们需要查总条数:

[sql] view plain copy  print?

  1. SELECT COUNT(*) FROM tb  
  2. WHERE CREATE_DATETIME > '1998-01-01'  


然后发现,这个求总数的sql竟然花了300ms,比取分页数据的时间还长!

有人说不加WHERE条件的COUNT会非常快,因为有单独的地方存这个总数。然并卵……

把COUNT(*)换成COUNT(1),COUNT(主键),耗时都一样。虽然"*"这个字符一直饱受诟病,但现在新版本的sql都已作了优化。

反复尝试之后,发现在CREATE_DATETIME上建立索引之后,查询时间直接降到15ms!!

思考:COUNT()语句不关心列,但仍然需要按WHERE条件来检索。所以优化连接条件和WHERE条件是优化COUNT()语句的关键。

好文章

http://imysql.cn/2008_06_24_speedup_innodb_count

猜你喜欢

转载自blog.csdn.net/zhangdaohong/article/details/72285067