[Mysql] Count(*)性能问题

来源:互联网 发布:南宁机场免税店 mac 编辑:程序博客网 时间:2024/05/12 20:37

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

SELECT COUNT(*) FROM tbWHERE CREATE_DATETIME > '1998-01-01'

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

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

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

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

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

0 0
原创粉丝点击