有没有其他方法可以在没有临时表的情况下从 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;
+----------+------+ | 关键词 | 计数 | +----------+------+ | 电脑 | 10 | | 路| 4 | | 树 | 4 | | 窗口 | 4 | | 自然 | 4 | | 森林 | 3 | | 汽车 | 3 | | 马自达 | 3 | | 摘要 | 3 | | 搞笑 | 3 | | 运动 | 3 | | 海| 高分辨率照片| CLIPARTO 3 | | 城市| 3 | | 战士 | 2 | | 鸟| 高分辨率照片| CLIPARTO 2 | | 灯| 1 | | 夏天| 1 | | 空间 | 1 | | 黄昏 | 1 | | Ubuntu | 1 | +----------+------+ 解释: +----+-------------+--------+--------+- --------------+---------+---------+------+------+- ---------------------------------------------+ | 编号 | 选择类型 | 表| 类型 | 可能的键 | 关键 | key_len | 参考 | 行 | 额外 | +----+-------------+--------+--------+- --------------+---------+---------+------+------+- ---------------------------------------------+ | 1 | 初级 | 关键词 | 索引 | 空 | 关键词 | 99 | 空 | 20 | 使用索引;使用临时的;使用文件排序 | | 1 | 初级 | | 全部 | 空 | 空 | 空 | 空 | 54 | | | 2 | 派生 | 壁纸_关键词 | 索引 | 空 | 初级 | 3 | 空 | 54 | | +----+-------------+--------+--------+- --------------+---------+---------+------+------+- ---------------------------------------------+ 3 行一组(0.00 秒)
编辑
另一个查询:
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';)方法算吗?