У меня есть функция PostgreSQL, которая возвращает результат запроса в сетку результатов pgadmin ДЕЙСТВИТЕЛЬНО FAST. Внутри это простая функция, которая использует dblink
для подключения к другой базе данных и делает возвращение запроса, так что я могу просто запуститьЗапрос PostgreSQL медленный при использовании NOT IN
SELECT * FROM get_customer_trans();
И это работает так же, как основной запрос таблицы.
Проблема заключается в том, что я использую пункт NOT IN
. Поэтому я хочу запустить следующий запрос, но это необходимо навсегда:
SELECT * FROM get_customer_trans()
WHERE user_email NOT IN
(SELECT do_not_email_address FROM do_not_email_tbl);
Как я могу ускорить это? Что-нибудь быстрее, чем статья NOT IN
для этого сценария?
Ive уже есть индекс по этой колонке в do_not_email_tbl. И, как я уже упоминал, результат, возвращаемый функцией, очень быстрый. 'SELECT * from get_customer_trans()' быстро возвращает в сетку результатов запроса все 2,2 миллиона записей. Похоже, функция работает быстро. Я хочу еще больше фильтровать результат, получая только тех клиентов, которых нет в do_not_email_tbl. –
ответ обновляется, чтобы избежать 'NOT IN' – mvp
AWEESOMEEEE !!!. Спасибо! вы уверены, что логика правильная с выбором 1? Я не знаком с NOT EXISTS. –