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