2009/10/26 Rodrigo Sperb <[email protected]>:
> Olá a todos,
>
> Eu tenho uma função implementada em PL\PgSQL que itera sempre pegando a
> linha do topo após ordenar por uma certa coluna. Isso se repete em todas
> iterações, e como faço atualizações nessa tabela (é uma "priority queue",
> para quem é familiarizado com notação matemática...) no intermédio, não
> possa ter a ordenação pré-estabelecida e sempre pegar o topo simplesmente...
> Preciso reordenar sempre.
>
> Acontece que isso leva algum tempo e eu preciso melhorar a performance do
> meu algoritmo. Ele é parte da minha tese de mestrado aqui na Holanda. Meu
> orientador me comentou que poderíamos ter as posições pré-definidas e fazer
> atualizações "inteligentes", mantendo cada registro na devida posição que
> deve ocupar... Mas ele ainda não me disse nada de como fazer. Queria, então,
> saber se alguém tem alguma idéia de como se pode fazer algo assim?
>


No PostgreSQL não existe garantia de qualquer tipo de ordenação dos
dados recuperados a não ser utilizando a cláusula ORDER BY.

Seu caso parece ser bastante específico. Se o que deseja é recuperar o
último registro incluído ou alterado *talvez* a coluna do sistema ctid
possa ajudá-lo:
http://www.postgresql.org/docs/current/interactive/ddl-system-columns.html

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a