Fabiano Neves's profileFabiano Neves Amorim - S...PhotosBlogListsMore ![]() | Help |
|
October 27 Cuidado com o IF Exists 3
De: Medina, Edvaldo 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 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... TrackbacksThe trackback URL for this entry is: http://fabianosqlserver.spaces.live.com/blog/cns!52EFF7477E74CAA6!1696.trak Weblogs that reference this entry
|
|
|