![]() |
Сложный запрос adoquery
Помогите, плиз, составить запросик:
есть две таблицы dbf. В одно около 12000 записей, в другой 341. Необходимо из первой таблицы исключить все записи второй таблицы по двум полям (все 341 записи есть в первой таблице). Делаю так: select table1.* from table1 left join table2 on table1.поле1 <> table2.поле1 and table1.поле2 <> table2.поле2 Запрос выполняется минут двадцать, грузит проц на 100% и в результате выдет 3 млн строк!!! Ниче не пойму.:( |
Re: Сложный запрос adoquery
SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.pole1 = table2.pole1 AND table1.pole2 = table2.pole2)
Если я правильно понял, то наверное так... |
Re: Сложный запрос adoquery
Цитата:
А я придумал вот так - тоже работает: SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.pole1 = table2.pole1 and table1.pole2 = table2.pole2 WHERE table2.pole1 IS NULL and table2.pole2 is null |
Re: Сложный запрос adoquery
SQL-запросы сильная штука...
Удачи))) |
Re: Сложный запрос adoquery
1) Добавляем индексы на столбцы, если возможно.
2) В вашем запросе, излишен table2.pole1 IS NULL 3) используем not in , но EXISTS оптимален. 3) в оракле есть minus 4) mssql EXCEPT http://msdn.microsoft.com/ru-ru/library/ms188055.aspx -- изучайте sql-ex.ru там есть все, что нужно. |
| Текущее время: 21:45. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2026 NoWa.cc