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
 
     
     
    