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

Откуда: г.Брянск
Сообщений: 24
Здравствуйте, господа.
Есть таблица T1 (маленькая - около 1000 записей) и большая T2 (>1млн).
DECLARE @T1 TABLE (IDT1 INT, F1 VARCHAR(25), F2 VARCHAR(25), еще поля)
DECLARE @T2 TABLE (IDT2 INT, F1 VARCHAR(25), F2 VARCHAR(25))
Нужно найти все записи в T1, которых нет в T2
Индексы (2) в таблице T2 по полю F1 и F2.

select * from t1 where IDT1 not in
(
select tmp.IDT1 from T1 tmp
inner join T2 on (tmp.F1=T2.F1 and tmp.F2=T2.F2)
)


Интересует более быстрый запрос. Заранее благодарен.
18 дек 12, 17:36    [13650227]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2566
ssswin, EXISTS
18 дек 12, 17:38    [13650243]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
ssswin
Member

Откуда: г.Брянск
Сообщений: 24
PaulYoung, NULL значений нет. Разницы не заметил. Можно пример кода в рамках t1 b t2 ?
18 дек 12, 18:03    [13650405]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2566
ssswin,

DECLARE @T1 TABLE (IDT1 INT, F1 VARCHAR(25), F2 VARCHAR(25))
DECLARE @T2 TABLE (IDT2 INT, F1 VARCHAR(25), F2 VARCHAR(25))
/*
Нужно найти все записи в T1, которых нет в T2
Индексы (2) в таблице T2 по полю F1 и F2.
*/
select * from @t1 t1 where not exists
(
select 1 from @T2 tmp
where (tmp.F1=t1.F1 and tmp.F2=t1.F2)
)
18 дек 12, 18:09    [13650421]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
ssswin
Member

Откуда: г.Брянск
Сообщений: 24
PaulYoung, спасибо
18 дек 12, 21:14    [13651016]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить