SQL где в (тысячи записей) - PullRequest
0 голосов
/ 19 марта 2019

Я сейчас в огурце и буду очень признателен за ваш совет.Получил поручение от нашего руководства составить список из 500000 адресов электронной почты и проверить в нашей БД, зарегистрированы ли там какие-либо из них.Проблема заключается в количестве пользователей, потому что "select * from db..tablename where email in (.....)" не будет работать с таким большим списком.Единственная идея, которую я получил до сих пор, - разделить список на более мелкие части, но он кажется очень неэффективным и отнимает много времени.Есть ли способ сделать его быстрее и умнее?

1 Ответ

0 голосов
/ 19 марта 2019

спасибо за ваши идеи!Я только что нашел решение, которое работает без какой-либо дополнительной ручной работы.

Я создал новую справочную таблицу со всем списком адресов электронной почты 500k, вставил ее туда, используя следующее утверждение (это помогло мне избежать 1000ограничение строк в обычном операторе вставки):

insert INTO db..emaillist
select 'email1@gmail.com' union all
select 'email2@gmail.com' union all
..........
select 'email3@hotmail.com' 

и теперь я собираюсь использовать:

Select userID, email
from bd..clients 
where email in (select email from db..emaillist)

Чтобы получить список пользователей, которые существуют в нашей БД.

...