Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как выполнить запрос NOT IN к большим таблицам?  [new]
xdx
Member

Откуда:
Сообщений: 395
Есть две довольно большие таблицы А (100 млн. записей), B (50 млн. записей).
Надо выполнить запрос что-то типа:
SELECT * FROM A WHERE Field1 NOT IN
(SELECT Field2 FROM B )

Т.е. мне надо найти отсутсвующие в таблице A записи.
Но этот запрос выполняется так до-о-о-лго, что результата я так и не дождался.
Как можно выполнить этот запрос быстрее?
16 ноя 09, 08:28    [7931776]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос NOT IN к большим таблицам?  [new]
Влом регистрироваться
Guest
xdx,

SELECT .. FROM A LEFT JOIN B .. WHERE B.ID IS NULL
16 ноя 09, 08:30    [7931778]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос NOT IN к большим таблицам?  [new]
Нектотам
Guest
xdx,

1. Какая структура таблиц?
2. Какие есть индексы?
3. Сколько уникальных значений этого поля в первой и второй таблице?

Если уникальных записей очень мало, то как идея - создать материализованное индексированное представление.
16 ноя 09, 08:37    [7931788]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос NOT IN к большим таблицам?  [new]
xdx
Member

Откуда:
Сообщений: 395
Влом регистрироваться

SELECT .. FROM A LEFT JOIN B .. WHERE B.ID IS NULL


О! Попробую!
Спасибо!
16 ноя 09, 08:47    [7931804]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос NOT IN к большим таблицам?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31173
xdx
Влом регистрироваться

SELECT .. FROM A LEFT JOIN B .. WHERE B.ID IS NULL


О! Попробую!
Спасибо!
или not exists
16 ноя 09, 14:16    [7934004]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить