Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как сделать удаление по частям? / 5 сообщений из 5, страница 1 из 1
15.11.2017, 13:40
    #39553467
Как сделать удаление по частям?
Есть таблички

table1(id int, data text);
table2(id int);


Вот такой скрипт работает около 50 часов:
Код: sql
1.
2.
DELETE table1
WHERE id IN (SELECT id FROM table2);


И при прерывании сессии все изменения откатываются.



Как можно красиво реализовать удаление частями с фиксирование промежуточных изменений?
...
Рейтинг: 0 / 0
24.11.2017, 12:08
    #39558893
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удаление по частям?
мандатная меткаЕсть таблички

table1(id int, data text);
table2(id int);


Вот такой скрипт работает около 50 часов:
Код: sql
1.
2.
DELETE table1
WHERE id IN (SELECT id FROM table2);


И при прерывании сессии все изменения откатываются.



Как можно красиво реализовать удаление частями с фиксирование промежуточных изменений?

Не знаю, нужно ли фиксировать промежутки.

А так?

Код: sql
1.
2.
3.
DELETE table1
WHERE id IN 
(SELECT id FROM table2 е2 where exists(select t1.id from table1 t1));
...
Рейтинг: 0 / 0
24.11.2017, 12:10
    #39558898
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удаление по частям?
Ролг Хупинмандатная меткаЕсть таблички

table1(id int, data text);
table2(id int);


Вот такой скрипт работает около 50 часов:
Код: sql
1.
2.
DELETE table1
WHERE id IN (SELECT id FROM table2);


И при прерывании сессии все изменения откатываются.



Как можно красиво реализовать удаление частями с фиксирование промежуточных изменений?

Не знаю, нужно ли фиксировать промежутки.

А так?

Код: sql
1.
2.
3.
4.
5.
DELETE table1
WHERE id IN 
(SELECT id FROM table2 е2 where exists(select t1.id from table1 t1));





DELETE table1
WHERE id IN
(SELECT e2.id FROM table2 е2 where exists(select t1.id from table1 t1 where t1.id=e2.id));
...
Рейтинг: 0 / 0
24.11.2017, 12:12
    #39558900
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удаление по частям?
Можно частями

Код: sql
1.
2.
3.
4.
DELETE table1 WHERE id IN 
   (SELECT e2.id FROM table2 е2 
   where exists(select t1.id from table1 t1 where t1.id=e2.id)
   limit 1000);
...
Рейтинг: 0 / 0
24.11.2017, 14:22
    #39559043
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удаление по частям?
мандатная меткаЕсть таблички

table1(id int, data text);
table2(id int);


Вот такой скрипт работает около 50 часов:
Код: sql
1.
2.
DELETE table1
WHERE id IN (SELECT id FROM table2);


И при прерывании сессии все изменения откатываются.



Как можно красиво реализовать удаление частями с фиксирование промежуточных изменений?

Вы бы лучше разобрались почему так медленно.
Скорее всего где то на table1 есть FK непроиндексированные.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как сделать удаление по частям? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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