そのクエリは遅いです (約 1.5 秒)。単に投稿のリストを返す必要があります
SELECT SQL_NO_CACHE p.id FROM 1_posts p LEFT JOIN 1_topics t ON (p.cid = t.cid AND p.container = t.id) WHERE t.cid = 1010699;
EXPLAIN は次のようになります。
+----+-------------+-------+------+--------------- --------+-----------+---------+---------------+--- ---+--------------------------+ | | ID | select_type | テーブル | タイプ | 可能な_キー | キー | key_len | 参照 | 行 | 行 エクストラ | +----+-------------+-------+------+--------------- --------+-----------+---------+---------------+--- ---+--------------------------+ | | 1 | シンプル | t | 参照 | プライマリ、cid | シド | 4 | 定数 | 216 | where を使用します。インデックスの使用 | | | 1 | シンプル | p | 参照 | プライマリ、cid、コンテナー | コンテナ | 4 | フォーラムdb.t.id | 49 | where | の使用 +----+-------------+-------+------+--------------- --------+-----------+---------+---------------+--- ---+--------------------------+
SQL_NO_CACHE はテスト目的でのみ存在することに注意してください。
テーブルの部分構造:
1_投稿:
mysql> 1_posts について説明します。 +----+-------------------------------------+------+-- ---+---------+----------------+ | | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ | +----+-------------------------------------+------+-- ---+---------+----------------+ | | シド | int(20) 符号なし | いいえ | PRI | 0 | | | | | ID | int(20) 符号なし | いいえ | PRI | ヌル | auto_increment | | | コンテナ | int(20) 符号なし | いいえ | マル | 0 | | |
mysql> 1_topics を説明します。 +-----------------+-------------------------------------+------+- -+---------------------+----------------+ | | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ | +-----------------+-------------------------------------+------+- -+---------------------+----------------+ | | シド | int(10) 符号なし | いいえ | PRI | 0 | | | | | ID | int(10) 符号なし | いいえ | PRI | ヌル | auto_increment | | | コンテナ | int(20) | いいえ | マル | 0 | | |
テーブルの投稿には何百万ものエントリがあり、約 50 万件のトピックがあります。
cid と id は、両方のテーブルでプライマリ コンボ キーです。cid はコミュニティ ID を意味します。これらのテーブルは、さまざまなフォーラムを主催しています。
このことをスピードアップするためにあなたが与えることができるどんな助けにも感謝します.