Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

271
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!