powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / delete + join
4 сообщений из 4, страница 1 из 1
delete + join
    #38862868
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помогите написать запрос по удалению из первой таблицы где есть связь inner join всех связанных по ИД записей со второй таблицей

т.е. select t1.* from tab1 t1 inner join tab2 t2 (t1.poleid=t2.tab1id) работает
А DELETE tab1 t1 inner join tab2 t2 (t1.poleid=t2.tab1id) НЕ РАБОТАЕТ

если писать запрос так: DELETE tab1 t1 where t1.poleid in (select t2.tab1id) from tab2 t2)
то план выполнения ужасный - для каждой записи из t1 идет обращение к таблице t2

версия
PostgreSQL 9.1.14 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit
...
Рейтинг: 0 / 0
delete + join
    #38862871
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushkaесли писать запрос так: DELETE tab1 t1 where t1.poleid in (select t2.tab1id) from tab2 t2)
то план выполнения ужасный - для каждой записи из t1 идет обращение к таблице t2


интересно а какой собственно вы план хотите для такой задачи?
От того что вы запрос перепишите далеко не факт что план изменится.
Приведите explain analyze для начала как я уже много раз предлагал вам вместо невнятных жалоб.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
delete + join
    #38862873
Legushka,

Какой-то у тебя эм-эс эс-ку-эль-ный акцент в синтаксисе запроса.
В постгре, если что, нужно писать DELETE ... USING.
Подробности, не поверишь, в документации ...
...
Рейтинг: 0 / 0
delete + join
    #38862966
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,
присоединяюсь к USING , но "negative loop" anti-join он не охватывает
приходится разнообразить not--exists-ом


-- откуда морал -- мс-скльный синтакс поширше будет, поуниверсальней. (хоть и мастдай).
а пж опять таки обосра облажалси, выбрав к реализации половинчатый ущербный синтакс.


план да -- можно бы привести, как вариант, когда табла2 узкая -- можно WHERE t1.id=ANY(ARRAY(SELECT id FROM tab2)) -- там какая-то разница возникает в планах. не факт, что полезная
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / delete + join
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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