我有一个有1.5亿行的表,具有这样的定义:
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=utf8select count(*) from tasks where done = 1;需要20秒。
我不太在意它的确切价值:把它四舍五入到最接近的百万没有问题。是否有办法使较少的查询不那么准确,但更快?
发布于 2015-09-17 10:29:33
如果您尝试过索引,但它无法加速,而升级硬件(RAM、SSD等)不是一种选择,那么可以考虑某种形式的“体系结构”方法:例如,记录一夜快照的计数,以便您可以在第二天进行查找?这足够准确吗?
编辑:或,每小时,或任何频率工作!
https://stackoverflow.com/questions/32626549
复制相似问题