COMO ENTRAR REGISTROS TABELA FILHA SEM ITENS

WHELLNET 02/02/2010 08:58:07
#333382
Pessoal bom dia!
Tenho um sistema de pdv de loja de roupas, banco Firebird.
é o seguinte, tenho as seguintes tabelas:

tbl_vendas
id
emissao
vtotal

tbl_vendasprodutos
id
venda (forekey da tbl_vendas.id)
produto

Pois bem, eu preciso listar os registros da tbl_vendas em que não há itens na tbl_vendasprodutos.
Não sou muito bom expert em SQL, mas fiz a seguinte:
select v.id, vp.id from tbl_vendas v
left outer join tbl_vendasprodutos vp on v.id = vp.venda
where cast(v.emissao as date) between [ô]12/24/2009[ô] and [ô]12/24/2009[ô]
and vp.id is null


Desta forma ele me atende perfeitamente, porém... demora muito (certa de 30 segundos) pra consultar.
Isso pq se trata de apenas um dia (que no caso tem 355 registros).

Há alguma forma de melhorar essa consulta?
ASHKATCHUP 02/02/2010 09:04:32
#333383
Acho que vai ficar mais rápido:


Select
*
From
Tbl_Vendas
Where
cast(v.emissao as date) between [ô]12/24/2009[ô] and [ô]12/24/2009[ô]
And not Exists (select 1 from tbl_vendasprodutos where tbl_vendasprodutos.venda = tbl_vendas.id)
WHELLNET 02/02/2010 13:28:08
#333412
ASHKATCHUP ainda continua lento!

Mas vi aqui que o erro era meu
Na verdade a tabela pai não estava relacionada com a tabela filha (forekey)
Coloquei e funcionou certinho!

De qualquer forma obrigado!
Tópico encerrado , respostas não são mais permitidas