[firebase-br] Delete em cascata usando SQL

Francisco Thiago Almeida jeandeadlucky em yahoo.com.br
Sex Out 8 11:07:38 -03 2004


Caros amigos, 

O meu colega de servico tem de fazer um delete em cascata com a seguinte estrutura (pais acima, filhos abaixo. Todas as relacoes sao NxN)

Loteamento (este será o excluido)
Lote
VendaLote
Parcela | Comprador | Transferencia
                                 Transferido

Como a cascata até transferido é a maior, nós comecamos o teste com ela e usamos o SQL:

DELETE FROM TRANSFERIDO TRS
WHERE IN (
               SELECT T.CODIGO
               FROM TRANFERENCIA T
               WHERE IN (
                              SELECT VL.CODIGO
                              FROM VENDALOTE L
                              WHERE IN (
                                             SELECT L.CODIGO
                                             FROM LOTE L
                                             WHERE LOTEAMENTO = 16
                                           )
                            )
              )
E demorou muito pra executar!!! (E não existem registros na tabela de Transferido. Para tentar solucionar tentamos outro SQL:

DELETE FROM TRANSFERIDO TRS
WHERE EXISTS (
               SELECT T.CODIGO
               FROM TRANFERENCIA T
               WHERE EXISTS (
                              SELECT VL.CODIGO
                              FROM VENDALOTE L
                              WHERE EXISTS (
                                             SELECT L.CODIGO
                                             FROM LOTE L
                                             WHERE LOTEAMENTO = 16
                                               AND VL.LOTE = L.CODIGO
                                           )
                            )
              )
Este sequer chegou ao fim de sua execução.

Neste caso, o que acontece no BDE? (isso mesmo, BDExPiradox) A consulta com o Exists nao deveria ser mais veloz? Vocês acham que rolar tabela seria mais rápido? Existe uma forma de otimizar este consulta?

 

Obrigado

     



-----------------------------------------------
Francisco Thiago de Almeida         
MRL Consultoria em Informática    
Divisão Desenvolvimento e Banco de Dados
Franca/SP
		
---------------------------------
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!


Mais detalhes sobre a lista de discussão lista