• Viernes 8 de Noviembre de 2024, 21:45

Autor Tema:  Consultar Ultimas Filas Introducidas  (Leído 1812 veces)

jarmok

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Consultar Ultimas Filas Introducidas
« en: Jueves 6 de Septiembre de 2007, 11:06 »
0
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?

bogotanoazul

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Consultar Ultimas Filas Introducidas
« Respuesta #1 en: Lunes 17 de Septiembre de 2007, 20:44 »
0
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
Fabio Guzman M.
     Ing. Sistemas
Bogotá Distrito Capital