Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги. Подскажите пожалуйста как можно ускорить запрос, удаляющий из таблицы t1 записи, отсутствующие в t2? Вот такой запрос висит часами: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Возможно как-то по-другому реализовать удаление? Быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:17 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Синий СлонДобрый день, коллеги. Подскажите пожалуйста как можно ускорить запрос, удаляющий из таблицы t1 записи, отсутствующие в t2? Вот такой запрос висит часами: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Возможно как-то по-другому реализовать удаление? Быстрее? А много ли удаляется строк? На медленном диске удаление 13M строк вполне может часы занять. Но более вероятный вариант - а на t1 нет никаких ссылающихся на нее FK из других таблиц? Дополнительно - перепишите NOT IN на NOT EXISTS будет сразу быстрее все. NOT IN - очень медленная операция. Обычно такие запросы анализируют путем - сделали select соответствующий delete, дальше если select быстро работает а delete очень медленно то FK или триггера.... если же сам select Тормозит то его и надо ускорять сначала. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:20 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Maxim BogukСиний СлонДобрый день, коллеги. Подскажите пожалуйста как можно ускорить запрос, удаляющий из таблицы t1 записи, отсутствующие в t2? Вот такой запрос висит часами: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Возможно как-то по-другому реализовать удаление? Быстрее? А много ли удаляется строк? На медленном диске удаление 13M строк вполне может часы занять. Но более вероятный вариант - а на t1 нет никаких ссылающихся на нее FK из других таблиц? Дополнительно - перепишите NOT IN на NOT EXISTS будет сразу быстрее все. NOT IN - очень медленная операция. Обычно такие запросы анализируют путем - сделали select соответствующий delete, дальше если select быстро работает а delete очень медленно то FK или триггера.... если же сам select Тормозит то его и надо ускорять сначала. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru удаляется немного, примерно 1% данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:38 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Максим, спасибо за ответы. Maxim BogukДополнительно - перепишите NOT IN на NOT EXISTS будет сразу быстрее все. NOT IN - очень медленная операция. Не совсем понял как это сделать, как связать client_id и NOT EXISTS так получается бессмыслица какая-то: DELETE FROM t1 WHERE client_id NOT EXISTS (SELECT id FROM t2); Извиняюсь заранее, не выспался, медленно соображаю ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:43 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Синий СлонМаксим, спасибо за ответы. Maxim BogukДополнительно - перепишите NOT IN на NOT EXISTS будет сразу быстрее все. NOT IN - очень медленная операция. Не совсем понял как это сделать, как связать client_id и NOT EXISTS так получается бессмыслица какая-то: DELETE FROM t1 WHERE client_id NOT EXISTS (SELECT id FROM t2); Извиняюсь заранее, не выспался, медленно соображаю ... Вроде дошло ) Надеюсь вы это имели ввиду: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:57 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
в плане появился anti join посмотрим на практике получится ли удалить таким запросом, очень надеюсь что да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 15:00 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Синий СлонВроде дошло ) Надеюсь вы это имели ввиду: Код: sql 1. Да. PS: еще раз процитирую Обычно такие запросы анализируют путем - сделали select соответствующий нужному вам delete, дальше если select быстро работает а delete очень медленно то FK или триггера.... если же сам select Тормозит то его и надо ускорять сначала. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 15:11 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Maxim BogukСиний СлонВроде дошло ) Надеюсь вы это имели ввиду: Код: sql 1. Да. PS: еще раз процитирую Обычно такие запросы анализируют путем - сделали select соответствующий нужному вам delete, дальше если select быстро работает а delete очень медленно то FK или триггера.... если же сам select Тормозит то его и надо ускорять сначала. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Максим, замена на NOT EXIST ускорила запрос!!! Запрос успешно выполнен без возвращаемых данных за 399658 мс. Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 15:25 |
|
||
|
Как быстро удалить строки из таблицы?
|
|||
|---|---|---|---|
|
#18+
Синий Слон, ускорить NOT IN без переписывания запроса можно - влив work_mem :) Заранее узнать сколько именно нужно work_mem невозможно, только запустить и посмотреть. В простом explain к сожалению это не видно. для информации https://explainextended.com/2009/09/16/not-in-vs-not-exists-vs-left-join-is-null-postgresql/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 12:11 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39746705&tid=1995440]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 419ms |

| 0 / 0 |
