我試過解決方案here,但它不起作用。選擇哪裏在(子查詢)慢
我的表是這樣的:
`Index` uid dept
...........................
1 001 dept1
2 001 dept2
3 001 dept3
4 002 dept2
5 002 dept3
6 002 dept4
7 003 dept1
8 003 dept5
9 004 dept1
10 004 dept6
我想檢索所有與特定dept
行。也就是說,如果我想檢索dept1
,我想檢索除uid = 002之外的所有行,因爲對於uid = 002沒有dept1
。
SELECT id FROM table WHERE uid IN
(SELECT uid WHERE dept='dept1')
我以前的版本,而無需使用WHERE IN是如下:使用索引,即使
查詢字符串很慢
首先檢索所有與部門= DEPT1的UID。
然後對第一個查詢中檢索到的所有uid使用for-loop。
該方法對於第一個查詢中檢索到的少量(100)行非常快。然而,它似乎並不是一個好的解決方案,因爲它會產生很多查詢(它們中的每一個都非常快)。
感謝編輯。 – benck 2012-04-05 16:46:40
This is similar with this http://stackoverflow.com/questions/6135376/mysql-select-where-field-in-subquery-extremely-slow-why – 2014-09-25 03:59:19