[firebase-br] Teste condicional aumenta o tempo de resposta?
Eduardo Jedliczka (TeamFB)
jedyfb em gmail.com
Ter Dez 5 12:37:57 -03 2006
Eu tenho a impressão que há alguma coisa errada com o seu teste.
A primeira consulta deve estar aproveitando os dados da cache (assim com a
terceira). Experimente reiniciar o FireBird antes de testar cada um destes
Selects...
Outra coisa, como você fez para saber a quantidade de leituras de cada
tabela ?
======================
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: "Clelson Augusto" <clelson_br em hotmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, December 04, 2006 6:09 PM
Subject: [firebase-br] Teste condicional aumenta o tempo de resposta?
Porque uma simples condição a mais aumenta a qtde de leituras e
consecutivamente o tempo resposta?
1) Primeiro Consulta
SELECT COUNT(*) FROM LOTES
INNER JOIN PEDIDOS ON PEDIDOS.LOTE = LOTES.LOTE AND PEDIDOS.FILIAL =
LOTES.FILIAL
INNER JOIN PEDITENS ON PEDITENS.PEDIDO=PEDIDOS.PEDIDO
INNER JOIN CLIENTES ON CLIENTES.CLIENTE=PEDIDOS.CLIENTE
WHERE LOTES.TIPOLOTE = 'S' AND LOTES.ACERTADO='S'
LEITURAS:
Clientes: 279
Lotes: 15
Pedidos: 279
PedItens: 802
2) Segunda Consulta
SELECT COUNT(*) FROM LOTES
INNER JOIN PEDIDOS ON PEDIDOS.LOTE = LOTES.LOTE AND PEDIDOS.FILIAL =
LOTES.FILIAL
INNER JOIN PEDITENS ON PEDITENS.PEDIDO=PEDIDOS.PEDIDO
INNER JOIN CLIENTES ON CLIENTES.CLIENTE=PEDIDOS.CLIENTE
WHERE LOTES.TIPOLOTE = 'S' AND LOTES.ACERTADO='S'
AND PEDITENS.PRODUTO < 10000
LEITURAS:
Clientes: 4239
Lotes: 76101
Pedidos: 76101
PedItens: 798
Só adicionei "AND PEDITENS.PRODUTO < 10000"
3) Terceira Consulta
SELECT COUNT(*) FROM LOTES
INNER JOIN PEDIDOS ON PEDIDOS.LOTE = LOTES.LOTE AND PEDIDOS.FILIAL =
LOTES.FILIAL
INNER JOIN PEDITENS ON PEDITENS.PEDIDO=PEDIDOS.PEDIDO
INNER JOIN CLIENTES ON CLIENTES.CLIENTE=PEDIDOS.CLIENTE
WHERE LOTES.TIPOLOTE = 'S' AND LOTES.ACERTADO='S'
AND CAST(PEDITENS.PRODUTO AS INTEGER) < 10000
Isso é muito estranho! Se colocar um CAST aumenta a velocidade e volta para
o mesmo resultado da Primeiro Consulta.
Mais um detalhe, o campo PEDITENS.PRODUTO é indice.
Isso é normal? Tem que colocar o CAST mesmo?
______________________________________________
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