首页 > 解决方案 > Mysql Innodb "select count(*)" 性能

问题描述

我有一个包含 1394971 条记录的表,是否可以优化 count(*) 性能?

mysql aDB -e 'select * from Table limit 1;'

0m0.034s

mysql aDB -e 'select count(*) from Table'

0m0.505s

现在,从mysql 计数性能https://www.percona.com/blog/2006/12/01/count-for-innodb-tables/

因此,如果您有类似 SELECT COUNT(*) FROM USER 之类的查询,MyISAM(MEMORY 和其他一些)表会更快,因为它们只会从存储值中读取表中的行数。然而,Innodb 将需要执行全表扫描或全索引扫描,因为它没有这样的计数器

我不想创建一个额外的“计数器”表。

我应该使用其他引擎吗?哪一个?我不想使用 MyISAM。这可能与其他数据库?

标签: mysql

解决方案


推荐阅读