保管するテーブルがありtag name
ますposts
table: tagname
tags | pid
festival | 10034
New York Fashion Week | 10034
festival | 10035
car | 10036
...
テーブルにはすでに 590,000 レコードが含まれています。ここで、このテーブルから最も人気のある最初の 10 個のタグを取得したいと考えています。
SELECT tags, COUNT(*) as Num FROM tagname
GROUP BY tags
ORDER BY Num DESC
これには 23.88 秒かかります。戻る358 kinds of tags
tags | Num
festival | 7201
art | 6988
gift | 6755
...
でさえ、このクエリを最適化する方法はmy.cnf
? タグのインデックスを追加しようとしましたが、効果がないようです。
編集:
EXPLAIN SELECT tags, COUNT(tags) as Num FROM
タグ名GROUP BY tags order by Num DESC
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE tagname ALL NULL NULL NULL NULL 597649 Using temporary; Using filesort