Usuário com melhor resposta
Subconsulta com CASE

Pergunta
-
Ola pessoal
Na seguinte consulta (exemplo):
select
case when nt.Serie < 100 then nt.Serie
else (select s.Numero from Series s where s.cod = nt.Serie) end
from Notas ntEsta subconsulta no "else" de que forma interfere no plano de execução?
O otimizador consegue identificar que "nunca vai entrar" nessa condição, por exemplo, e não considerar a leitura da tabela Series?
Julio C.
- Editado Julio Costi quarta-feira, 15 de maio de 2019 02:19
Respostas
-
Julio,
Sabendo que o comando Else representa para qualquer linguagem de programação, que caso qualquer condição imposta no Case não seja verdadeira ou satisfatória, a linguagem Transact-SQL vai reconhecer e trabalhar da mesma forma, o else somente será processado caso as condições do case não sejam satisfatórias.
Agora identificar que nunca vai entrar neste condição não é bem assim.
Eu particularmente falando não tenho o hábito de utilizar o Else justamente para evitar que o query processor tenha que analisar mais uma possível condição.
Interferir diretamente no plano de execução, somente analisar o mesmo para afirmar, mas que ela vai interferir no processamento em tempo real vai.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Marcado como Resposta Julio Costi quinta-feira, 16 de maio de 2019 00:04
-
Deleted
- Marcado como Resposta Julio Costi quinta-feira, 16 de maio de 2019 00:05
Todas as Respostas
-
Julio,
Sabendo que o comando Else representa para qualquer linguagem de programação, que caso qualquer condição imposta no Case não seja verdadeira ou satisfatória, a linguagem Transact-SQL vai reconhecer e trabalhar da mesma forma, o else somente será processado caso as condições do case não sejam satisfatórias.
Agora identificar que nunca vai entrar neste condição não é bem assim.
Eu particularmente falando não tenho o hábito de utilizar o Else justamente para evitar que o query processor tenha que analisar mais uma possível condição.
Interferir diretamente no plano de execução, somente analisar o mesmo para afirmar, mas que ela vai interferir no processamento em tempo real vai.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Marcado como Resposta Julio Costi quinta-feira, 16 de maio de 2019 00:04
-
Deleted
- Marcado como Resposta Julio Costi quinta-feira, 16 de maio de 2019 00:05