mysql 2.5M行慢计数

有一个简单的
mysql表与id(主键)和哈希(索引).其他一些列(varchar / int)但不需要对它们进行查询.

我的总表大小约为350MB,行数为2.5M.

SELECT COUNT(*) FROM table LIMIT 1;

大约需要0.5 – 1s.我的innodb缓冲区设置为1GB.我也试过变化(没有改进),如:

SELECT COUNT(id) FROM table LIMIT 1;

SELECT COUNT(*) FROM table WHERE id > 0 LIMIT 1;

单身

SELECT * FROM table WHERE id = 'x' LIMIT 1;

将在1毫秒内返回(localhost mysql).有关改善慢速计数(0.5 – 1s)的任何提示将不胜感激.

最佳答案 你可以找到一个简单的解释
here.简而言之,innodb必须进行全表扫描以计算所有行(没有where子句,它将使用索引).

另见
this answer.

顺便说一句,我在查询中使用LIMIT 1时看不到任何意义.由于没有group by子句,因此它将始终返回一条记录.

点赞