Wpis z mikrobloga

Jak mogę dostać tylko ostatnią linię z tabeli w #postgresql bez wywoływania selecta z sortowaniem po ID malejąco i brania pierwszego wyniku?
Chodzi mi o to, żeby po prostu dostać ostatnie ID jakie jest w tabeli i dodawać dalej, bo zwrócenie ostatniego ID po posortowaniu malejąco trwa jakieś 500ms przy 140k rekordów w bazie, co jest bardzo słabym wynikiem według mnie :L
No, chyba że jest jakaś opcja w postgresie żeby przy dodawaniu automatycznie nadawał ID/indeksował rekordy.
Ktoś, coś?

#bazydanych #sql #postgresql
  • 6
  • Odpowiedz
@TomaszWKS: Nie, luźne dane raczej. Chcę po prostu brać ostatnie ID w tabeli i dodawać dane z id+1, id+2, id+3, ...
No nie jest to dobry pomysł bo przed chwilą wygooglałem indeksację w postgres, także pytanie raczej już tylko czysto teoretyczne i żeby wiedzieć że jest taki sposób.
  • Odpowiedz
Tworzysz sekwencje i jak insertujesz to podajesz żeby insertował kolejną wartość sekwencji jako klucz główny. Ewentualnie piszesz trigera do tej tabeli, który zrobi to za ciebie i w ogóle nie podajesz wartości dla klucza głównego przy insercie (tutaj nie jestem pewny czy na Postresie się tak da)
  • Odpowiedz
@Wyrewolwerowanyrewolwer:

create table foo (id serial, porn_url varchar);
insert into foo (porn_url) values ('[http://redtube.com](http://redtube.com)');
no i możesz wtedy robić select last_value from foo_id_seq co będzie chyba najszybsze
  • Odpowiedz