| От | Andrew Dunstan |
|---|---|
| Тема | Re: Very long deletion time on a 200 GB database |
| Дата | |
| Msg-id | 4F464C49.4050503@dunslane.net обсуждение исходный текст |
| Ответ на | Re: Very long deletion time on a 200 GB database (Marcin Mańk <marcin.mank@gmail.com>) |
| Ответы |
Re: Very long deletion time on a 200 GB database
|
| Список | pgsql-performance |
On 02/23/2012 05:07 AM, Marcin Mańk wrote: >> DELETE FROM B >> WHERE r_id IN (SELECT R.id >> FROM R, B >> WHERE r.end_date< (NOW() - (interval '1 day' * 30)) >> AND r.id = b.r_id >> > How about: > > DELETE FROM B > WHERE r_id IN (SELECT distinct R.id > FROM R WHERE r.end_date< (NOW() - (interval '1 day' * 30)) > > ? > Or possibly without the DISTINCT. But I agree that the original query shouldn't have B in the subquery - that alone could well make it crawl. What is the distribution of end_dates? It might be worth running this in several steps, deleting records older than, say, 90 days, 60 days, 30 days. cheers andrew
В списке pgsql-performance по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера