【发布时间】:2009-06-23 08:25:12
【问题描述】:
如何用group by加速select count(*)?
太慢了,用的很频繁。
我在使用 select count(*) 和 group by 时遇到了很大的麻烦,表的行数超过了 3,000,000。
select object_title,count(*) as hot_num
from relations
where relation_title='XXXX'
group by object_title
relation_title,object_title 是 varchar。 where relation_title='XXXX',返回超过 1,000,000 行,导致 object_title 上的索引无法正常工作。
【问题讨论】:
-
您能否提供更多详细信息,例如。整个Select和表结构?另一个第一枪:您是否正确使用索引?
-
我在下面添加了一些潜在的解决方案,但我同意 Kosi 的观点,即查看表定义(尤其是 varchar 列的长度!)和索引定义对诊断这一点非常有帮助。
-
关系是 Innodb 还是 MyISAM 表?
-
ZA - 为您的 object_title 和 relation_title 列定义的最大长度是多少?看看我下面的答案,为什么这很重要......
-
EXPLAIN是您的朋友,将帮助您调整索引:dev.mysql.com/doc/refman/5.0/en/explain.html>
标签: mysql performance indexing count group-by