|
ускорить удаление
|
|||
---|---|---|---|
#18+
Есть табличка, из нее надо удалить данные, которые отсутствуют в другой табличке. Удаление идет очень медленно Код: sql 1. 2.
Подскажите пожалуйста как можно ускорить данный запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 19:01 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
lr2, добавьте work_mem, при достаточном work_mem постгрес сможет построить хэш таблицу и выполнить запрос, при недостаче - будут бесконечно долгие вложенные циклы https://explainextended.com/2009/09/16/not-in-vs-not-exists-vs-left-join-is-null-postgresql/ ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 19:18 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
lr2, или перепишите через NOT EXISTS ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 19:19 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
lr2Есть табличка, из нее надо удалить данные, которые отсутствуют в другой табличке. Удаление идет очень медленно Код: sql 1. 2.
Подскажите пожалуйста как можно ускорить данный запрос. 1)переделать на not exists 2)проверить что ВСЕ FK (foreign keys) ссылающиеся на t1 проиндексированы на foreign стороне (т.е. не на t1 а на таблицах которые на t1 ссылаются). 3 - очень медленно это качественный показатель... размеры таблиц в количестве записей скажите и сколько у вас запрос отрабатывал (если отрабатывает вообще конечно). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 02:11 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
Maxim Boguklr2Есть табличка, из нее надо удалить данные, которые отсутствуют в другой табличке. Удаление идет очень медленно Код: sql 1. 2.
Подскажите пожалуйста как можно ускорить данный запрос. 1)переделать на not exists 2)проверить что ВСЕ FK (foreign keys) ссылающиеся на t1 проиндексированы на foreign стороне (т.е. не на t1 а на таблицах которые на t1 ссылаются). 3 - очень медленно это качественный показатель... размеры таблиц в количестве записей скажите и сколько у вас запрос отрабатывал (если отрабатывает вообще конечно). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru 1) Посмотрите, правильно ли такой передел? Код: sql 1. 2.
Выполнился быстро (5 мин), но проверить не получается правильно ли удалил, т.к. запрос Код: sql 1. 2.
выполняется бесконечно. Сам запрос, как оказалось, написал я неверно. Он вот такого вида должен был быть: Код: sql 1. 2.
Это я как раз пытался с ексистс переделать и условие в скобках добавил. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 11:10 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
Maxim Boguk 2)проверить что ВСЕ FK (foreign keys) ссылающиеся на t1 проиндексированы на foreign стороне (т.е. не на t1 а на таблицах которые на t1 ссылаются). Индексы есть. 3 - очень медленно это качественный показатель... размеры таблиц в количестве записей скажите и сколько у вас запрос отрабатывал (если отрабатывает вообще конечно). Ни разу не отработал. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 11:11 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
lr2, авторВыполнился быстро (5 мин), но проверить не получается правильно ли удалил, т.к. запрос SELECT * FROM t1 WHERE t1.id NOT IN (SELECT id2 FROM t2) Так зачем вы через not in проверяете когда надо через not exists. Много много раз писали что NOT IN использовать не надо в запросах. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 11:19 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
Maxim Boguklr2, авторВыполнился быстро (5 мин), но проверить не получается правильно ли удалил, т.к. запрос SELECT * FROM t1 WHERE t1.id NOT IN (SELECT id2 FROM t2) Так зачем вы через not in проверяете когда надо через not exists. Много много раз писали что Not exists использовать не надо в запросах. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru противоречивое утверждение, так как надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 15:07 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
Ролг ХупинMaxim Boguklr2, пропущено... Так зачем вы через not in проверяете когда надо через not exists. Много много раз писали что Not exists использовать не надо в запросах. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru противоречивое утверждение, так как надо? Надо больше мне кофе по утрам пить. Кроме случая запросов вида NOT IN (1,2,3) - во всех остальных случаях без исключений NOT EXISTS будет не хуже чем NOT IN а в большинстве случаев будет сильно лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 15:52 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
Maxim BogukРолг Хупинпропущено... противоречивое утверждение, так как надо? Надо больше мне кофе по утрам пить. Кроме случая запросов вида NOT IN (1,2,3) - во всех остальных случаях без исключений NOT EXISTS будет не хуже чем NOT IN а в большинстве случаев будет сильно лучше. лайкнул причем, практически так же можно утверждать и в случае SQL Server. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 16:31 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
Maxim Bogukво всех остальных случаях без исключений NOT EXISTS будет не хуже чем NOT IN а в большинстве случаев будет сильно лучше. Если не считать одной мелочи, что они по-разному будут работать с NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 14:52 |
|
ускорить удаление
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovMaxim Bogukво всех остальных случаях без исключений NOT EXISTS будет не хуже чем NOT IN а в большинстве случаев будет сильно лучше. Если не считать одной мелочи, что они по-разному будут работать с NULL. Есть одно но - поведение NOT IN с NULL оно а)бредовое б)неожиданное. И то как NOT IN будет себя с NULL вести - большинству авторов запросов будет ну очень неожиданным. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 18:33 |
|
|
start [/forum/topic.php?fid=53&fpage=43&tid=1995302]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 157ms |
0 / 0 |