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
