I have table with events for user, here are my table columns
events (
id integer,
user_id integer,
event text,
date timestamp
)
and like to delete rows from table when number of events for user are bigger than 100 and start deleting form oldest rows.
update 1
It is for PostgreSQL
I like to delete all events for any user who currently has >100 events starting from oldest events for user. So like to keep 100 newest events for each user
I try with this query but it running forever and don't do anything
delete
from events as t1
where id IN (
select id from events where t1.user_id = user_id order by date desc offset 100
)
update 2
I have updated my query and let it run
delete from events as t
where t.id not in (
select t2.id
from events t2
where t2.user_id = t.user_id
order by t2.date desc
limit 100
);
But it takes 11min to run :( My table had 15 users, 71931 rows, each user by average had 4795 events