有一个简单的
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子句,因此它将始终返回一条记录.