2011/6/9 Mozart Hasse <mozart.ha...@usa.net>:
>
> O que você citou como índice/tabela "PRIMARIO"

Mozart, existe tabela primária?  Creio que não.


> se o seu índice primário

E índice primário, existe?  Pelo menos, não em SQL nem no modelo relacional.


> então ao percorrer sequencialmente as páginas da sua tabela ou índice

As páginas de um índice pode ser percorrido seqüencialmente?


> só é possível escolher um critério para chamar de "primário", enquanto que
> todos os outros índices farão referência aos dados existentes na tabela, às
> vezes usando este critério de ordenação.

Mozart, creio que a confusão sua e da Izana vem da confusão entre os níveis
lógico e físico, respectivamente entre chave e índice.  Chave primária é um
conceito do SQL, já abandonado há muito tempo no modelo relacional, e que não
corresponde a índices.


> O PostgreSQL, por padrão, armazena os registros conforme sua conveniência,
> sem nenhum critério de ordenação definido. Já o SQL Server, por exemplo,
> ordena por padrão todos os dados de uma tabela por sua chave primária. Cada
> abordagem tem suas vantagens e desvantagens.

Referência?  Parece curiosamente ineficiente, já que impõe trabalho adicional
na escrita, manutenção, e só beneficia leituras seqüenciais, um caso
relativamente raro na prática.  Não duvidando, só achei curioso… e uma
pesquisa superficial
<http://msdn.microsoft.com/en-us/library/ms174979(v=SQL.110).aspx> parece
indicar que o comportamento do MS SQL Server é exatamente o mesmo do
PostgreSQL, e aliás de todos os outros SGBDs SQL de que já ouvi falar.


> No SQL Server é possível definir qual o critério de ordenação criando o
> índice com a opção CLUSTERED, padrão para chaves primárias.

http://msdn.microsoft.com/en-us/library/ms174979(v=SQL.110).aspx diz o
contrário.  Mudou na versão em desenvolvimento?


> Manter os dados ordenados fisicamente dentro da tabela ajuda imensamente na
> otimização de consultas

De algumas consultas, não todas, nem necessariamente das mais relevantes.

        Sempre se pode reorganizar uma tabela física para refletir um novo
padrão de uso que passou a ser mais relevante que o original mas, na prática,
costuma levar a limitar o uso: consultas que não se conformem à organização da
tabela tenderão a ser menos usadas.

        O modelo relacional foi criado justamente para evitar esse tipo de
engessamento.  Não significa que o DBA não possa organizar tabelas que
realmente possam se beneficiar disso; é só que, normalmente, essa é uma
otimização precoce, que acaba prejudicando todo o sistema para trazer ganhos
marginais a apenas algumas consultas.

        A ’melhor prática’, no caso, é criar todas as tabelas desordenadas,
como é o padrão, e ordenar apenas aquelas que, no uso real, provem precisar
disso.  Simplesmente afirmar que ‘manter os dados ordenados fisicamente…
ajuda’, sem relativizar, é incorreto.


-- 
skype:leandro.gfc.dutra?chat      Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61) 3546 7191              gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191        ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a