一時テーブルなしで mysql からタグ クラウドを作成する他の方法はありますか?
mysql> wallpaper_keywords について説明します。 +--------------+-----------------------+------+--- --+---------+----------------+ | | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ | +--------------+-----------------------+------+--- --+---------+----------------+ | | ID | mediumint(7) 符号なし | いいえ | PRI | ヌル | auto_increment | | | wallpaper_id | mediumint(7) 符号なし | はい | マル | ヌル | | | | | キーワード ID | smallint(5) 符号なし | はい | マル | ヌル | | | +--------------+-----------------------+------+--- --+---------+----------------+ mysql> キーワードを説明します。 +---------+-----------------------+------+-----+-- -------+----------------+ | | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ | +---------+-----------------------+------+-----+-- -------+----------------+ | | ID | mediumint(7) 符号なし | いいえ | PRI | ヌル | auto_increment | | | キーワード | 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 | | | 海 | 海 | 3 | | | 都市 | 3 | | | 戦士 | 2 | | | 鳥 | 2 | | | ライト | 1 | | | 夏 | 夏 | 1 | | | スペース | 1 | | | 夕暮れ | 1 | | | Ubuntu | 1 | +----------+-------+ 説明: +----+-------------+--------------------+-------+- --------------+---------+---------+------+------+- ----------------------------------------------+ | | ID | select_type | テーブル | タイプ | 可能な_キー | キー | 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
+----+-------------+------------+--------+-------- -------+------------+---------------------+-----------------+- ---+----------------+ | | ID | select_type | テーブル | タイプ | 可能な_キー | キー | key_len | 参照 | 行 | 行 エクストラ | +----+-------------+------------+--------+-------- -------+------------+---------------------+-----------------+- ---+----------------+ | | 1 | プライマリ | | | すべて | ヌル | ヌル | ヌル | ヌル | 20 | ファイルソートの使用 | | | 1 | プライマリ | k | eq_ref | プライマリ | プライマリ | 3 | data.keyword_id | 1 | | | | | 2 | 派生 | 週 | インデックス | ヌル | キーワード ID | 3 | ヌル | 59 | | | +----+-------------+------------+--------+-------- -------+------------+---------------------+-----------------+- ---+----------------+
問題は今でしょう - より良い解決策はありますか? より安い (SHOW STATUS LIKE 'last_query_cost';) それを数える方法は?