この非常に単純なクエリには多くの時間がかかります。
SELECT text, url, docid
FROM retrieve
LEFT JOIN citations2
ON citations2.fromdoc = retrieve.docid
WHERE citations2.todoc IS NULL
LIMIT 10;
NULL 条件の左結合があります...それが原因でしょうか? 随所にインデックスを配置しています。
低速クエリ ログは次のとおりです。
# Time: 130404 8:00:31
# User@Host: em[em] @ zebra [130.239.162.142]
# Query_time: 27.006579 Lock_time: 0.000019 Rows_sent: 0 Rows_examined: 90682
use em_bg04;
SET timestamp=1365055231;
SELECT text, url, docid FROM retrieve LEFT JOIN citations2 ON citations2.fromdoc = retrieve.docid WHERE citations2.todoc IS NULL LIMIT 10;
関連するテーブルとサイズの概略図を次に示します (下にスクロールし続けEXPLAIN
て、クエリの出力を確認してください) 。
EXPLAIN の出力は次のとおりです。
だから、それはテーブル全体を通過しなければならないようです... .もちろんこれを読みましたが、意味がわかりません。では、このクエリを高速化する方法はありますか?