我有一個在MySQL的(MyISAM的)這個查詢:MySQL是阻止(或如何優化本)
SELECT * FROM `links` WHERE `id` IN (SELECT `link` FROM `posts` WHERE `read_time`<'2010-10-16')
它似乎確定了我,但MySQL的它掛斷。 'links'是一個有16000行的表格,'posts'有大約5000行。 「ID」和「鏈接」是第一
我做了一些測試:除了一對情侶在每個表
- 刪除所有記錄。它的工作原理
- 執行內部查詢(SELECT
link
FROMposts
WHEREread_time
< '2010-10-16')第一和執行外部查詢(SELECT * FROMlinks
WHEREid
IN( '1232', '1354','3324 「))。它的工作原理 - 嘗試升級我的Ubuntu,但它說,這是最後的MySQL版本(5.1.37-1ubuntu5.5)
發生了什麼事?我發現了一個錯誤?或者我做錯了什麼?
不,這不是一個錯誤。正如馬克·拜爾斯提到的那樣,一個「JOIN」會更好地工作。如果我沒有記錯的話,「IN」會比較所有內容,最終得出16k * 5k的比較結果。 – Bobby 2010-12-16 12:39:19
發表你解釋計劃的答案將是不言而喻的 - 使用加入+索引 – 2010-12-16 12:39:33