以下工作正常,但速度太慢。我只需要知道表B中有匹配的記錄,所以有什麼竅門?MySQL:查找匹配兩個表A和B的記錄,其中B很大
(奇怪的是相反的搜索:發現不加入記錄(IS NULL)是非常快的)
SELECT
TableA.id
FROM
TableA
LEFT JOIN
TableB
ON
TableB.TableA_id = TableA.id
WHERE
TableB.id IS NOT NULL and TableA.clientid=13 ;
客戶端ID現在已經收錄但本條這大大減緩了查詢從非常快分鐘。
(03May12我現在已經在一個功能更強大的服務器上的同一個數據庫上試過這個相同的查詢,並且查詢需要一秒鐘。所以看起來我的問題是我的原始服務器完全超載,具有諷刺意味的是,上面的查詢是我將不得不在一個更快的服務器上重建數據庫,清理它然後在「慢」服務器上重新生成它)
你有什麼索引在你的桌子上? – Taryn
你有'FOREIGN KEY'在'TableB.TableA_id'上正確定義了嗎?這將提供一個可以提高性能的指標。 (我們假設'TableA.id'是一個PK,因此已經編入索引) –
...像'FOREIGN KEY(TableA_id)REFERENCES TableA(id)' –