Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

277
Visualizações
La forma más rápida de obtener la última fila en una tabla de base de datos postgreSQL sin modificar la tabla

Tengo una tabla y necesito obtener la última celda de una columna en ella. Sin embargo, la mesa es grande y quiero hacerlo lo más rápido posible. El truco es que las filas más nuevas (marca de tiempo más grande) se agregan al final de la tabla. Así que realmente solo necesito encontrar la forma más rápida de obtener la última fila. Me gustaría hacer esto sin hacer un índice o modificar permanentemente la tabla o crear tablas (EDITAR: estoy abierto a hacer vistas)

Intenté esto: SELECT my_column FROM my_schema.my_table ORDER by timestamp DESC NULLS LAST LIMIT 1 pero fue muy lento para la tabla grande

así que probé esto: SELECT my_column FROM my_schema.my_table WHERE timestamp=(select max(timestamp) from my_schema.my_table)

y se sintió aún más lento.

¿Alguna idea?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Podría usar una forma un poco complicada y mantener su última fila insertada en una tabla separada.

Tenga en cuenta que la consulta INSERT puede devolver valores:

 INSERT INTO ... RETURNING *;

Ahora puede usarlo y guardar una nueva fila en una tabla separada:

 INSERT INTO my_schema.my_table_last_row(INSERT INTO ... RETURNING *);

La tabla my_table_last_row debe tener las mismas columnas (o simplemente puede INHERIT de la tabla original).

Podría usar un disparador ON INSERT para hacer el trabajo.

 CREATE OR REPLACE FUNCTION remember_last_row() RETURNS trigger AS $BODY$ BEGIN TRUNCATE my_schema.my_table_last_row; INSERT INTO my_schema.my_table_last_row VALUES(NEW.*); RETURN NEW; END; $BODY$ CREATE TRIGGER remember_last_row_trigger BEFORE INSERT ON my_schema.my_table FOR EACH ROW EXECUTE PROCEDURE remember_last_row();

Creo que esta es la forma más rápida de insertar la última fila sin modificar la tabla original (incluida la adición de un índice).

Por supuesto, las cosas se complican si actualiza esa fila; también deberá mantener la copia actualizada.


Solución más simple: almacene solo la última marca de tiempo;)

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda