首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有什么办法在myisam中用where条件进行快速不准确的计数(*)?

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

Stack Overflow用户
提问于 2015-09-17 09:11:02
回答 1查看 49关注 0票数 3

我有一个有1.5亿行的表,具有这样的定义:

代码语言:javascript
复制
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秒。

我不太在意它的确切价值:把它四舍五入到最接近的百万没有问题。是否有办法使较少的查询不那么准确,但更快?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 10:29:33

如果您尝试过索引,但它无法加速,而升级硬件(RAM、SSD等)不是一种选择,那么可以考虑某种形式的“体系结构”方法:例如,记录一夜快照的计数,以便您可以在第二天进行查找?这足够准确吗?

编辑:或,每小时,或任何频率工作!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32626549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档