Удалить записи из Postgresql - PullRequest
1 голос
/ 18 марта 2019

Мне нужно удалить записи из одной таблицы, основываясь на условии внутреннего соединения двух других таблиц, однако запрос выполняется целую вечность.

DELETE FROM public.blacklist WHERE subject_id NOT IN(
SELECT DISTINCT a.id FROM public.subject a
INNER JOIN stg.blacklist_init b ON a.subject_id=b.customer_code);

Есть идеи, как этого добиться?

Спасибовы.

1 Ответ

1 голос
/ 18 марта 2019

Вы можете использовать NOT EXISTS вместо NOT IN, и я думаю, что вам не нужно DISTINCT

DELETE FROM public.blacklist bl
 WHERE NOT EXISTS  (
                     SELECT 0 
                       FROM public.subject a
                      INNER JOIN stg.blacklist_init b 
                         ON a.subject_id=b.customer_code
                      WHERE a.id = bl.subject_id 
                     );
...