Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Delphi

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 21.11.2012, 09:56   #1
Пользователь
 
Пол:Мужской
Регистрация: 13.10.2008
Сообщений: 38
Репутация: 4
По умолчанию Сложный запрос adoquery

Помогите, плиз, составить запросик:
есть две таблицы dbf. В одно около 12000 записей, в другой 341.
Необходимо из первой таблицы исключить все записи второй таблицы по двум полям (все 341 записи есть в первой таблице). Делаю так:

select table1.* from table1 left join table2 on table1.поле1 <> table2.поле1 and table1.поле2 <> table2.поле2

Запрос выполняется минут двадцать, грузит проц на 100% и в результате выдет 3 млн строк!!!

Ниче не пойму.
dreich вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Рекомендуем супермаркет КНС.ру - Color Laser 150nw - Подарок каждому покупателю!Компьютерная техника в КНС Нева - купить ноутбук MSI - быстро, качественно и надежно! г. Санкт-Петербургстул кухонный купитьбарнхаус под ключ недорогоlptracker установка на тильду


Старый 22.11.2012, 08:22   #2
BookkeeperW
Пользователь
 
Пол:Мужской
Регистрация: 26.03.2008
Сообщений: 67
Репутация: 28
По умолчанию Re: Сложный запрос adoquery

SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.pole1 = table2.pole1 AND table1.pole2 = table2.pole2)
Если я правильно понял, то наверное так...
BookkeeperW вне форума
 
Ответить с цитированием Вверх
Старый 22.11.2012, 09:33   #3
dreich
Пользователь
 
Пол:Мужской
Регистрация: 13.10.2008
Сообщений: 38
Репутация: 4
По умолчанию Re: Сложный запрос adoquery

Цитата:
Сообщение от BookkeeperW Посмотреть сообщение
SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.pole1 = table2.pole1 AND table1.pole2 = table2.pole2)
Если я правильно понял, то наверное так...

Спасибо, работает.
А я придумал вот так - тоже работает:
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
dreich вне форума
 
Ответить с цитированием Вверх
Старый 22.11.2012, 09:42   #4
BookkeeperW
Пользователь
 
Пол:Мужской
Регистрация: 26.03.2008
Сообщений: 67
Репутация: 28
По умолчанию Re: Сложный запрос adoquery

SQL-запросы сильная штука...
Удачи)))
BookkeeperW вне форума
 
Ответить с цитированием Вверх
Старый 03.11.2014, 19:59   #5
человек_45
Новичок
 
Пол:Мужской
Регистрация: 03.11.2014
Сообщений: 16
Репутация: 1
По умолчанию 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 там есть все, что нужно.
человек_45 вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL сложный запрос Nik555 Базы данных 1 20.07.2011 08:28
ADOQuery + DBGridEh Litvinenko_A Delphi 8 01.12.2009 13:48
> Сложный запрос в MySQL TITANiusIK Веб - Программирование 1 11.08.2009 14:42
SQL Запрос McAccess2007 (Запрос с 3 таблиц - дублирование ) Dr Evil Базы данных 3 23.07.2009 09:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:19. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.14540 секунды с 11 запросами