SQLITE3 хочет найти LIKE данные в таблице, используя длинный список - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть таблица SQLITE3 с более чем 1 милой строк и несколькими столбцами, один из которых 'email_address'.У меня также есть отдельный список из примерно 200 000 веб-доменов.

Я хочу найти все строки из моей таблицы, которые имеют адреса электронной почты с этими доменами.Я могу выяснить, как сделать это индивидуально с помощью «select * from table, где email_address, например,«% domain »;»Но кто-нибудь знает, как я могу сделать это на массовом уровне, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 15 декабря 2018

Вы также можете сделать это без как.Что-то вроде

select emailAddr,domainName
from email
JOIN domains on substr(emailAddr,instr(emailAddr,'@')+1) = domainName

И вы можете создать индекс для доменной части адреса электронной почты, что-то вроде

CREATE INDEX emailAddr_idx ON email ( substr(emailAddr,instr(emailAddr,'@')+1) )

Я не знаю, есть лидостаточно большой набор данных для проверки его эффективности / воздействия.

0 голосов
/ 17 декабря 2018

Мне удалось заставить это работать:

создать финал таблицы как select * из alladdresses присоединиться ко всем доменам на substr (email_address, instr (email_address, '@') + 1) = domain;

Создал новую таблицу со всей информацией о адресах, которая соответствовала доменам, которые у меня были, и добавил в дополнительный столбец только доменов.Спасибо тем, кто вывел меня на правильный путь!

0 голосов
/ 14 декабря 2018

Просто угадав название таблиц и столбцов.Используйте соединение между двумя таблицами:

SELECT d.domain, e.email_address
FROM domains as d
INNER JOIN emails as e
ON e.email_address LIKE '%' || d.domain
...