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

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Sex Set 15 10:31:11 -03 2006


É 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 





Mais detalhes sobre a lista de discussão lista