У меня есть запрос:
SELECT DISTINCT field1 FROM table1 WHERE field2 = something
(таблица 1 содержит 1 миллион записей, время выполнения: 0,106 с, возвращает: 20 записей)
Другой запрос
SELECT DISTINCT similarField1 FROM table2 WHERE similarField2 = somethingElse
(таблица2 содержит полмиллиона записей, время выполнения: 0,078 с, возвращает: 20 записей)
Теперь, если я запускаю запрос, комбинируя вышеперечисленное:
SELECT DISTINCT field1 FROM table1 WHERE field2 = something AND field1 NOT IN (SELECT DISTINCT similarField1 FROM table2 WHERE similarField2 = somethingElse)
Это не дает результата даже в течение 10 минут. Почему это стало резко медленным, и что может быть потенциальным решением.
изменить: я использую MySQL с dbvisualizer 6.5
LEFT JOIN
выбрать два варианта и вернуть только те строки, где совпадений нет. (leftjoinedquery.field1 имеет значение null). - person GolezTrol   schedule 09.02.2015SELECT DISTINCT field1 FROM table1 LEFT OUTER JOIN table2 ON table1.field1 = table2.similarField1 WHERE table1.field2 = something AND table2.similarField2 = somethingElse
, конечно, это увеличило скорость (заняло 35 секунд), но не дало желаемого результата. - person Anil Bhaskar   schedule 09.02.2015