我有一个包含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秒。
我并不太关心确切的价值:没有问题让它四舍五入到最接近的百万。有没有办法让较少的查询不那么准确,但更快?
答案 0 :(得分:1)
如果您尝试过索引并且无法加速,并且升级硬件(RAM,SSD等等)不是一个选项,请考虑某种形式的"架构&# 34;方法:例如记录您可以在第二天查找的计数的夜间快照?这准确吗?
编辑:或者,每小时或任何频率都有效!