SK
Size: a a a
SK
C
order by profile_id, create_ts desc сверху добавил - все то же самое :( AI
C
C
C
EM
YS
profile_id оставить по 10 последних записей по create_ts, одним запросом.SELECT id -- это запись?Нет бы показать
FROM (select id, row_number() over (partition by profile_id order by create_ts desc) as pos from payment) AS partition
WHERE partition.pos <= 500; -- а это десять, да? ;)
\d payment и настоящий оптимизируемый запрос, с EXPLAIN (ANALYZE, BUFFERS), рассказать про распределение данных и про то, что получилось с другими методами...C
select id - да, запрос настоящий, это нужно для дальнейшего delete, чтобы у каждого профиля осталось только N последних payment. Indexes:(кстати, только сейчас заметил, что у create_ts brin индекс)
"payment_pkey" PRIMARY KEY, btree (id), tablespace "secondspace"
"payment_create_ts_idx" brin (create_ts), tablespace "secondspace"
"payment_profile_id_idx" btree (profile_id), tablespace "secondspace"
YS
DELETE FROM payment ...) все записи, кроме N последних?IA
C
DELETE FROM payment ...) все записи, кроме N последних?DELETE FROM payment WHERE id IN (select id ...), где все упирается в написание именно внутреннего запроса, который я и привел в пример, я буду рад, ибо может я чего не понимаюIA
YS
DELETE FROM payment WHERE id IN (select id ...)
NOT IN (...), в таком случае.C
IA
IA
C
C
C