有没有办法在myisam中使用where条件进行快速不准确的计数(*)?

时间:2015-09-17 09:11:03

标签: mysql myisam

我有一个包含150万行的表,其定义如下:

CREATE TABLE `tasks` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `task` varchar(255) NOT NULL,
  `done` tinyint unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `done` (`done`)
) ENGINE=MyISAM AUTO_INCREMENT=154505834 DEFAULT CHARSET=utf8

select count(*) from tasks where done = 1;需要20秒。

我并不太关心确切的价值:没有问题让它四舍五入到最接近的百万。有没有办法让较少的查询不那么准确,但更快?

1 个答案:

答案 0 :(得分:1)

如果您尝试过索引并且无法加速,并且升级硬件(RAM,SSD等等)不是一个选项,请考虑某种形式的"架构&# 34;方法:例如记录您可以在第二天查找的计数的夜间快照?这准确吗?

编辑:或者,每小时或任何频率都有效!

相关问题