我有一个简单的mysql表,其中包含约1200万条记录。
CREATE TABLE IF NOT EXISTS md5_table(
md5 char(32),
category INTEGER NOT NULL,
PRIMARY KEY (md5),
INDEX INDEX_MD5(md5)
);
我想计算上表中的类别。
SELECT category, count(category) FROM md5_table
GROUP BY category;
我们经常使用此查询,执行该查询大约花了10秒钟。我想将其减少到毫秒。
答案 0 :(得分:0)
您可以尝试一下。假设您有一个category
表。然后尝试:
SELECT c.category,
(SELECT COUNT(*)
FROM md5_table t
WHERE t.category = c.category
) as cnt
FROM category c;
这需要在md5_table(category)
上建立索引。
我发现MySQL在使用索引进行聚合查询方面相当挑剔。您可能会发现此方法可以加快您的特定查询的速度。