Inicial > Não categorizado > Cuidado com o IF Exists 3

Cuidado com o IF Exists 3

 

De: Medina, Edvaldo
Enviada em: terça-feira, 27 de outubro de 2009 09:33
Para: Amorim, Fabiano
Assunto: ENC: Cuidado com o IF EXISTS…
Prioridade: Alta

Fabiano, uma pergunta.

Se tivermos um IF com vários EXISTS com AND o SQL vai realizar todas as consultas ou no primeiro que for falso o sistema já finaliza a condição, exemplo:

IF (@B = ‘S’) AND

     (EXISTS(SELECT)) AND

     (EXISTS(SELECT)) AND

     (EXISTS(SELECT)) AND

     (@A = ‘S’)

BEGIN

END

———————————————–

De: Amorim, Fabiano
Enviada em: terça-feira, 27 de outubro de 2009 10:11
Para: Medina, Edvaldo
Assunto: RES: Cuidado com o IF EXISTS…

Cara, infelizmente ele vai avaliar todas as consultas, para depois pegar o resultado delas e fazer o IF. Por ex:

DECLARE @A VarChar(1)

SET @A = ‘X’

IF (@A = ‘X’)

AND EXISTS (SELECT 1 FROM CONVE002 WHERE ID_Cota = 1)

AND EXISTS (SELECT 1 FROM CONVE002 WHERE ID_Cota = 2)

AND EXISTS (SELECT 1 FROM CONVE002 WHERE ID_Cota = 3)

AND EXISTS (SELECT 1 FROM CONVE002 WHERE ID_Cota = 4)

AND EXISTS (SELECT 1 FROM CONVE002 WHERE ID_Cota = -1)

BEGIN

SELECT ‘Existe’

END

Ele vai executar todos os selects na CONVE002 guardar o resultado em memória e usar um operador de compute scalar para validar o IF.

Veja no plano de execução, que o operador de compute scalar é o último a ser executado… Não sei não mais acho que o ideal seria ter uma validação para cada consulta…

clip_image002

Categorias:Não categorizado
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: