powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сравнить 2 большие таблицы по PK ??
10 сообщений из 10, страница 1 из 1
Сравнить 2 большие таблицы по PK ??
    #40010053
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Подскажите, как лучше сравнить 2 большие таблицы (1.8млрд) по PK?

Есть 2 таблицы, из одной переносились данные в копию разными методами (триггер+insert into), хочу проверить, не потерялись ли при переносе какие то строки. Возможно ли на таком массиве выявить, каких ID недостает в таблице получателе?
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010054
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
select c1.id from
  customers1 c1 left outer join customers2 c2
   on c1.id = c2.id
  where c2.id is null
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010124
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Сколько по времени данная конструкция обработает такой объём?
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010132
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

на таких объемах может достаточно долго.

я бы написал так:
Код: sql
1.
select c1.id from customers1 c1 where not exists (select 1 from customers2 c2 where c2.id = c1.id)



что бы добиться оператора MJ:right anti semi join

иначе у вас может получиться план где будет соединение слиянием с последующим оператором фильтра по c2.id is null
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010165
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

На миллионе записей:



Как видно цена фильтрации невысока на самом деле.
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010168
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Впрочем, судя по планам, твой вариант пошустрее должен быть.
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010173
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

на мелких объемах разницы видно не будет. + важным фактором является как раз количество отсутствующих строк во второй таблице.

если скажем в обоих таблицах по 2 лярда, а разница между строками ~100k, то оба запроса в плане потребления ресурсов будут почти идентичны.
а вот если разница будет большой, к примеру ~овер 10 лямов строк, то тогда план с оператором фильтра потребит больше циклов CPU
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010174
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть смысл попробовать вариант с EXCEPT, он работает вполне сносно при сверке крупных массивов данных.
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010178
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

вот кстати хорошая статья по сравнению
https://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join
...
Рейтинг: 0 / 0
Сравнить 2 большие таблицы по PK ??
    #40010220
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
teCa,

на таких объемах может достаточно долго.

я бы написал так:
Код: sql
1.
select c1.id from customers1 c1 where not exists (select 1 from customers2 c2 where c2.id = c1.id)



что бы добиться оператора MJ:right anti semi join

иначе у вас может получиться план где будет соединение слиянием с последующим оператором фильтра по c2.id is null


Воспользовался этим вариантом, сравнилось за 22 минуты, более чем хорошо. Выявил 650 тысяч отсутствующих строк.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сравнить 2 большие таблицы по PK ??
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]