Hola
Para una aplicación que estoy desarrollando es importante que guarde las 1000 últimas filas introducidas en una BD Oracle, en una cache de mi aplicación para poder acceder rápidamente a ellas.
Se me ocurrio hacer una consulta del MAX(ID), donde el campo ID es una secuencia:
CREATE SEQUENCE secuencia_id_alm
start with 1
increment by 1
nomaxvalue;
CREATE OR REPLACE TRIGGER clave_id_alm
before insert on ALARMAS for each row
begin
select secuencia_id_alm.nextval
into :new.ID
from dual;
end;
Y consultar los que tienen ID mayor que MAX(ID)-1000.
Bien, esto funcionaba bien, hasta que borras algún dato de la BD y en la consulta ya no obtengo los 1000 últimos datos.
La otra opción que se me ocurrió es hacer un SELECT * y coger las 1000 últimas, pero es muy lento, ya que tengo más de 300.000 registros en la BD.
¿Alguien conoce alguna manera de hacerlo más eficientemente?