【发布时间】:2012-11-01 21:34:41
【问题描述】:
有没有其他方法可以在没有临时表的情况下从 mysql 制作标签云?
mysql> 解释壁纸关键字; +--------------+-----------+------+--- --+---------+----------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +--------------+-----------+------+--- --+---------+----------------+ |编号 | mediumint(7) 无符号 |否 |优先级 |空 |自动增量 | |壁纸_id | mediumint(7) 无符号 |是 |穆尔 |空 | | |关键字 ID | smallint(5) 无符号 |是 |穆尔 |空 | | +--------------+-----------+------+--- --+---------+----------------+ mysql>解释关键字; +---------+----------+------+-----+-- -------+----------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +---------+----------+------+-----+-- -------+----------------+ |编号 | mediumint(7) 无符号 |否 |优先级 |空 |自动增量 | |关键词 | varchar(32) |是 |统一 |空 | | +---------+----------+------+-----+-- -------+----------------+
SELECT k.keyword,count(k.keyword) AS count FROM keywords k Left Join wallpaper_keywords wk ON wk.keyword_id = k.id GROUP BY wk.keyword_id, k.keyword ORDER BY count DESC limit 100;
编辑
另一个查询:
SELECT count,k.keyword from (SELECT * , count(wk.keyword_id) AS count FROM wallpaper_keywords wk GROUP BY wk.keyword_id LIMIT 50000) as data left join keywords as k on k.id = data.keyword_id order by count desc limit 500
+----+-------------+------------+--------+----- ----------+------------+---------+---------------- -+--------+----------------+ |编号 |选择类型 |表|类型 |可能的键 |关键 | key_len |参考 |行 |额外 | +----+-------------+------------+--------+-------- --------+------------+---------+------------------+- -----+----------------+ | 1 |初级 | |全部 |空 |空 |空 |空 | 20 |使用文件排序 | | 1 |初级 | ķ | eq_ref |初级 |初级 | 3 |数据.keyword_id | 1 | | | 2 |派生 |周 |索引 |空 |关键字 ID | 3 |空 | 59 | | +----+-------------+------------+--------+-------- -------+------------+---------+-----------------+- -----+----------------+
现在的问题是 - 有没有更好的解决方案?更便宜的(SHOW STATUS LIKE 'last_query_cost';)怎么算?
【问题讨论】: