這個非常簡單的查詢花費了大量的時間:我可以優化此查詢嗎?
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
# [email protected]: 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輸出:
如此看來,它要經過整個表...當然。我讀this,但我無法理解它。那麼,有沒有辦法讓這個查詢更快?
嘗試增加在'ON'子句where子句'選擇文本,URL,docID的 FROM檢索 LEFT JOIN citations2 ON citations2.todoc IS NULL AND citations2.fromdoc = retrieve.docid LIMIT 10;' – Meherzad 2013-04-04 09:26:03
@Meherzad現在好多了!謝謝(如果您將您的評論複製到答案我會接受) – dsign 2013-04-04 09:29:31