所以,我剛剛開始了一個新的mySQL數據庫,它有兩個主表,bigTable [600,000行]和lilTable [8000行]。有一個字段blId鏈接表,這些表已被索引在bigTable中。極慢嵌套mySQL查詢
我想從bigTable中選擇與lilTable中符合特定條件的任何條目共享blId的所有條目,但我不需要該表中的任何其他信息,因此連接似乎過多。
事不宜遲,這裏是我的非常慢查詢:
SELECT * FROM testdb.bigTable where blId in
(SELECT blId FROM certtest.lilTable WHERE color LIKE 'blue');
這需要〜52秒跑在我的電腦,上,仍然需要50秒的時候,內部查詢返回0的結果!相反,如果我單獨運行內部查詢並手動創建一個可接受的blId的列表,該列表代替了子查詢,它將在不到十分之一秒的時間內運行。藍色火焰正在發生什麼?
編輯:所以我找到了一種方法來加速它,把它包裝在另一個冗餘的select語句中? (削減查詢時間下降到0.25秒)任何人都可以解釋這種行爲,這將不勝感激。
SELECT * FROM testdb.bigTable where blId in
(SELECT * FROM
(SELECT blId FROM certtest.lilTable WHERE color LIKE 'blue') AS why
);
你必須在sql中使用'LIKE'嗎?如果你改成'color ='blue'',會更快嗎?請包括表結構。 –
你有沒有在表格中定義的索引?桌子有多大?爲什麼使用Like? – ChuckCottrill