SoloCodigo

Bases de Datos => Oracle => Mensaje iniciado por: jarmok en Jueves 6 de Septiembre de 2007, 11:06

Título: Consultar Ultimas Filas Introducidas
Publicado por: jarmok en Jueves 6 de Septiembre de 2007, 11:06
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?
Título: Re: Consultar Ultimas Filas Introducidas
Publicado por: bogotanoazul en Lunes 17 de Septiembre de 2007, 20:44
Hola.

Pruebalo asi:

SELECT vista.valor
FROM (SELECT t.ID valor,
       ROWNUM fila
        FROM nombre_tabla t
       ORDER BY 1 DESC) vista    
        WHERE vista.fila <1000

Saludos desde Bogotá-Colombia