Evandro, > From: Evandro Ricardo Silvestre <[EMAIL PROTECTED]> > Subject: Re: [pgbr-geral] 2 cadastros em uma tabela > To: Comunidade PostgreSQL Brasileira > > > 90%?! Com certeza! "Cheio" é pouco, eu diria *entupido* de NULLs. Qualquer > > índice sobre um campo assim será quase sempre ignorado pelo otimizador. > > Logo, toda a vez que você quiser consultar só os clientes, o servidor vai > > trazer para a memória os fornecedores também, só para despediçar CPU e > > disco ignorando-os. > Se eu condicionar a consultar para apenas *clientes* e tiver um indice > no campo que indica a categoria da entidade (o campo utilizado para > condicionar) vai continuar enchendo a memória com os fornecedores?
É muitíssimo provável (ou seja, para todos os casos práticos e realistas) que sim. Isso vai depender do número de registros e da proporção clientes/fornecedores da sua base. Se o número de clientes não for muito pequeno em relação ao total (digamos, por exemplo, menos de 5% em uma base não muito grande), o otimizador vai achar (com razão) que é mais vantajoso ler a tabela inteira (seq scan) ao invés de catar, um por um, um monte de registros do índice de clientes (nested loop). O limiar que vai fazer o otimizador decidir entre a leitura completa e o uso do índice depende de diversos fatores, como o número total de registros, tamanho dos registros, número de registros no índice condicional, etc. Consulte o EXPLAIN da consulta usando sua modelagem e os dados da base de produção para saber o que o servidor faz na sua base. O que importa é que o otimizador vai escolher uma opção ou outra por um excelente motivo e sua única opção para não desperdiçar disco e CPU à toa e fazer uma boa modelagem. Atenciosamente, Mozart Hasse _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral