Ribamar Sousa escreveu: > 2008/6/20 William Leite Araújo <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>>: > > 2008/6/19 Ribamar Sousa <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>: > > (...) > > Acredito que o texto do manual, e como também relatam em alguns > livros, talvez precise ser mais claro. > Sei que muita gente não procura testar estas coisas, mas o que > eu entendi ao ler foi que ao executar simultâneos selects eu > receberia os registros em ordem aleatória. > > > O que houve foi um equívoco em sua interpretação. Caso você > execute simultâneos "SELECT's", pode ser que eles sejam retornados > em ordem, mas não é garantido esse retorno sempre. Pode ocorrer > troca de ordem, como de fato ocorre ao se alterar alguma coisa na tupla. > > > Willian, sem querer ter razão na marra, mas apenas me justificando. Veja > o texto do manual: > > "Quando a tabela é lida, as linhas aparecem em uma ordem aleatória, a > não ser que a classificação seja requisitada explicitamente." > > Mas este longo debate foi muito proveitoso e percebo que a coisa não é > assim, pois caso tenha havido alguma alteração isso sim, alterará a > ordem. Mas acredito que o texto deveria citar que, caso não haja > alteração a ordem será sempre a mesma. Veja o parágrafo completo: > > "Uma tabela em um banco de dados relacional é muito semelhante a uma > tabela no papel: é formada por linhas e colunas. O número e a ordem das > colunas são fixos, e cada coluna possui um nome. O número de linhas é > variável, refletindo a quantidade de dados armazenados em um determinado > instante. O padrão SQL não dá nenhuma garantia sobre a ordem das linhas > na tabela. Quando a tabela é lida, as linhas aparecem em uma ordem > aleatória, a não ser que a classificação seja requisitada > explicitamente. Esta parte é descrita no Capítulo 7 > <http://pgdocptbr.sourceforge.net/pg80/queries.html>. Além disso, o SQL > não atribui identificadores únicos para as linhas e, portanto, é > possível existirem várias linhas totalmente idênticas na tabela. Isto é > uma conseqüência do modelo matemático subjacente ao SQL, mas geralmente > não é desejável. Mais adiante neste capítulo será mostrado como lidar > com esta questão." > http://pgdocptbr.sourceforge.net/pg80/ddl.html#DDL-BASICS > >
Creio que o que você deseja é obtido acrescentando um ORDER BY random() ao final de seu SELECT. Aí sim diferentes execuções retornarão com variação na ordem dos registros, mesmo que o banco não tenha sofrido qualquer alteração. Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral