[firebase-br] Interbase rpido x Firebird muito lento. Me ajudem com esse problema por favor.
Rodolpho da Silva
nascimento em gko.com.br
Qua Maio 13 17:02:04 -03 2009
Marcelo,
Experimente este select......
select a.* from associados a
where not exists (select codigo_associado
from pagamentos p
where p.codigo_associado = a.codigo_associado
and p.ano_pagamento = 2008)
----- Original Message -----
From: Marcelo Pinto
To: lista em firebase.com.br
Sent: Wednesday, May 13, 2009 4:42 PM
Subject: Interbase rpido x Firebird muito lento. Me ajudem com esse problema por favor.
Pessoal é o seguinte, tenho as tabelas ASSOCIADOS e PAGAMENTOS. E preciso
saber quem pagou uma determinada anuidade e quem não pagou.
As tabelas estão assim:
ASSOCIADOS (5696 registros)
-------------
codigo_associado nome_associado
01 Fulano
02 Beltrano
03 Ciclano
PAGAMENTOS (17114 registros)
-------------
codigo_associado ano_pagamento valor_pagamento
01 2007 100,00
01 2008 110,00
01 2009 120,00
02 2008 110,00
02 2009 120,00
03 2008 110,00
Fiz o seguinte sql para mostrar quem pagou (2008 por ex.):
select * from associados
where codigo_associado in (select codigo_associado from pagamentos where
ano_pagamento = 2008)
Esse o firebird roda tranquilo.
O meu problema maior é quando preciso listar os que não pagaram (2008 de
novo):
select * from associados
where codigo_associado NOT in (select codigo_associado from pagamentos where
ano_pagamento = 2008)
Nesse caso o firebird demora cerca de 2min pra terminar a consulta e com o
interbase é instantâneo.
Pq essa diferença toda???
Será que alguém pode me dar uma ajuda?
Já tentei utilizar inner join, mas não dava os resultados esperados.
Acabava tendo q utilizar o NOT IN de qualquer forma. E é exatamente ele q
deixa tudo muito lento.
A tabela associados está com PK no codigo_associado e a tabela de pagamentos
está com PK no codigo_associado,ano_pagamento.
A única diferença na execução do sql entre o firebird e o interbase foi no
PLAN.
Enquanto o firebird utilizou: PLAN (PAGAMENTOS NATURAL) PLAN (ASSOCIADOS
NATURAL)
O interbase fez: PLAN (PAGAMENTOS INDEX (RDB$PRIMARY3)) PLAN (ASSOCIADOS
NATURAL)
Alguém tem idéia do que pode estar acontecendo?
Ou alguma idéia pra eu montar um select mais rápido?
Obrigado desde já.
Marcelo Pinto
------------------------------------------------------------------------------
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
------------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.5.325 / Virus Database: 270.12.27/2112 - Release Date: 05/13/09 07:04:00
Mais detalhes sobre a lista de discussão lista