[firebase-br] Ajuda: Porque o FB não está utilizando o índice?

Bruno Freitas brunofguard-depot em yahoo.com.br
Seg Set 18 14:47:54 -03 2006


Acho que encontrei um bug no FB 2.0 RC4.

Localmente, o acesso fica uma maravilha, o plan está muito melhor, os 
índices que deveriam ser utilizados estão realmente sendo utilizados.

Porém, quando se muda o acesso para remoto (colocando-se um IP na string 
de conexão, mesmo colocando o IP da máquina local), a história muda de 
rumo. O "Server Version" exibido pelo IBExpert está incorreto e não 
mostra a string "Firebird 2.0 Release Candidate 4", apenas 
"WI-6.0.0.XXXX". E o pior de tudo: O PLAN vira um lixo novamente. 
Algumas queries que na conexão local utilizavam o índice, via conexão 
remota utilizam o plan NATURAL.

Alguém sabe informar se esse "bug" eh conhecido?

[]s

Bruno Freitas

Bruno Freitas escreveu:
> Olá Eduardo!
> 
> Obrigado pela resposta, mas não convenceu. Não sei se vc reparou, no 
> segundo teste, mas eu possuo um indice IDX_DATA_HORA_CONSULTA (composto 
> pelos dois campos definidos no order by). Dessa forma, para uma melhor 
> performance, o indice DEVERIA ser usado sim na query onde o join é 
> utilizado. Mas não foi o que aconteceu...
> 
> De qualquer forma, descobri o problema: O otimizador do FB 1.5 para 
> ordenações de resultados derivado de joins!
> 
> Testei aqui com o FireBird 2 RC4 e funcionou perfeitamente, o FB 
> utilizou o índice e o resultado veio instantaneamente!
> 
> Fica aí a dica!
> 
> Resta agora aguardar a versão final do FB2.0!
> 
> []s
> 
> Bruno Freitas
> 
> Eduardo Jedliczka (TeamFB) escreveu:
> 
>>É simples...
>>
>>você está retornando TODOS os registros de consulta, e ordenando (sort) por 
>>campos que não fazem parte da PK.
>>
>>assim, é mais rápido para o banco processar todos os registros (natural) e 
>>usar um sort para montar o resultado do que buscar o índice e repetir o 
>>processo já citado...
>>
>>O otimizador às vezes pode não ter o melhor resultado, mas em linhas gerais 
>>ele não é tão burro assim...
>>
>>======================
>>Eduardo Jedliczka
>>Membro do TeamFB - FireBase
>>Apucarana - PR
>>======================
>>"Posso não concordar com nada do que dizes.
>>Mas defenderei até a morte o seu direito de dizê-lo"
>>(Voltaire 1694-1778)
>>----- Original Message ----- 
>>From: "Bruno Freitas" <brunofguard-depot em yahoo.com.br>
>>To: <lista em firebase.com.br>
>>Sent: Thursday, September 14, 2006 5:30 PM
>>Subject: [firebase-br] Ajuda: Porque o FB não está utilizando o índice?
>>
>>
>>Olá pessoal!
>>
>>Alguém poderia me informar porque o FB não está utilizando o índice
>>nessa query?
>>
>>select consultas.*
>>from consultas
>>left join pacientes on pacientes.paciente = consultas.paciente
>>order by data_consulta, hora_consulta
>>
>>Eis o plan utilizado (obtido via IBExpert):
>>
>>Plan
>>PLAN SORT (JOIN (CONSULTAS NATURAL,PACIENTES INDEX (RDB$PRIMARY16)))
>>Adapted Plan
>>PLAN SORT (JOIN (CONSULTAS NATURAL,PACIENTES INDEX (PK_PACIENTES)))
>>
>>Nota: Reparem o "CONSULTAS NATURAL"
>>
>>Agora a query sem o join, o índice é utilizado normalmente:
>>
>>select *
>>from consultas
>>order by data_consulta, hora_consult
>>
>>Eis o plan utilizado (obtido via IBExpert):
>>
>>Plan
>>PLAN (CONSULTAS ORDER IDX_DATA_HORA_CONSULTA)
>>Adapted Plan
>>PLAN (CONSULTAS ORDER IDX_DATA_HORA_CONSULTA)
>>
>>Nota: Reparem o "CONSULTAS ORDER IDX_DATA_HORA_CONSULTA"
>>
>>O FB não utiliza índice para ordenação de joins? Como eu deveria
>>proceder para obter uma performance desejável do meu join?
>>
>>[]s
>>
>>Bruno Freitas
>>
>>
>>______________________________________________
>>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>Para editar sua configuração na lista, use o endereço 
>>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>Para consultar mensagens antigas: http://firebase.com.br/pesquisa 
>>
>>
>>______________________________________________
>>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> 
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista