Fórum Curiosidade sobre Indices e PLANs #46332

26/08/2004

0

Amigos,

Tenho quase certeza da resposta, mas não custa perguntar...

Quando, em quase 100¬ de todas as queries de uma aplicação, e algumas gigantes com vários joins, wheres, groups, etc... o Firebird sempre utiliza meus índices dentro do PLAN é um sinal claro de que os índices foram bem projetados ou não faz tanta diferença assim ?
Só não são em 100¬ pq em alguns joins o servidor opta pelo PLAN NATURAL para uma ou outra tabela envolvida...

Não tenho nenhuma base de testes sobre tabelas grandes com ´índices ruins´ e ´índices bons´ para comparar as diferenças...

[]´s
Vinicius.


Vinicius2k

Vinicius2k

Responder

Posts

26/08/2004

Afarias

|é um sinal claro de que os índices foram bem projetados ou não faz
|tanta diferença assim ?

é sinal q existem índices necessários


|Só não são em 100¬ pq em alguns joins o servidor opta pelo PLAN
|NATURAL para uma ou outra tabela envolvida...

NATURAL é algo q vc deve evitar de qualquer forma (na maior parte das vezes -- e sempre q possível)


|Não tenho nenhuma base de testes sobre tabelas grandes com ´índices
|ruins´ e ´índices bons´ para comparar as diferenças...

Índices de baixa seletividade devem ser evitados (geralmente) - quando numa tabela (em determinada consulta) é usado mais q 1 índice, elimine os de menor seletividade q possivelmente terá ganhos.


T+


Responder

Gostei + 0

27/08/2004

Vinicius2k

Blz afarias !

Fiz umas mudanças aqui, e neste projeto, que é pequeno, só 20 tabelas, consegui que em 100¬ das queries estáticas sejam usados meus índices...
Só quando o usuário intervem solicitando uma pesquisa por um campo ´incomum´ é que ele não utiliza todos... ( dependendo do que o usuário solicita ele usa o NATURAL, mas tbm eu não sou mágico, e criar índices para todos os campos seria besteira... :D )

Valeu pelas dicas :wink:

T+


Responder

Gostei + 0

28/08/2004

Afarias

|Só quando o usuário intervem solicitando uma pesquisa por um
|campo ´incomum´ é que ele não utiliza todos...

Usando apenas 1 já é suficiente (bom, desde q tenha uma boa seletividade)


|( dependendo do que o usuário solicita ele usa o NATURAL, mas tbm eu
|não sou mágico, e criar índices para todos os campos seria besteira...

Seria mesmo! :) Neste caso (quando o usuário pode definir a consulta) é normal q ocorra isso... sem problemas.


T+


Responder

Gostei + 0

28/08/2004

Vinicius2k

Usando apenas 1 já é suficiente (bom, desde q tenha uma boa seletividade)

Como assim? O ´ideal´ não eh cada tabela envolvida num Join fique com um indice meu no PLAN?
Vamos supor uma tabela de Pedidos gigantesca ´Joineada´ com uma tabela de Clientes gigantesca tbm... se o PLAN adotado contiver um índice meu para a ´Pedidos´, mas ficar com o NATURAL para a Clientes (no relacionamento) isso eh ruim, não eh?

Humm... talvez eu tenha me expressado mal e vc não tenha entendido :

O que eu quis dizer eh nos casos dos Joins... antes se eu tinha, por exemplo, 4 tabelas envolvidas, às vezes, o PLAN adotava indices meus para 3 e uma delas ficava com o NATURAL... compreendeste agora camagada? :wink:

T+


Responder

Gostei + 0

29/08/2004

Afarias

Eu q me expressei mal. Quiz dizer:: 1 índice ´por tabela´! :D


T+


Responder

Gostei + 0

29/08/2004

Vinicius2k

Blz. Agora estah compreendido.

Valeu a força afarias. :wink:

T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar