DESAFIO DO GORDO – Solução

E ai galera, tudo bem com vocês?

Antes de mais nada quero agradecer à todos que participaram do último DESAFIO DO GORDO e ressaltar que tivemos várias respostas corretas.

Agora vamos à resolução de mais um DESAFIO DO GORDO.

Como puderam perceber no script que faz a criação da tabela Aluno, a coluna NomeAlu possui uma restrição de nulabilidade, ou seja, não pode ser nula.

Ao realizar a pesquisa na tabela Aluno com o predicado WHERE NomeAlun IS NULL, temos uma contradição para o otimizador de consultas, pois essa coluna nunca poderá ser nula devido à restrição de nulabilidade.

Desta forma o otimizador de consultas do SQL Server não necessita de nenhum operador de pesquisa para resolver a consulta executada e utiliza o operador CONSTANT SCAN para indicar que as linhas retornadas serão sempre iguais ou constantes.

Espero que tenham gostado desse desafio e não deixem de inscrever-se no blog para receberem todos os novos posts.

Grande abraço.

3 ideias sobre “DESAFIO DO GORDO – Solução

  1. Alexandre Araujo (@ale_araujo16)

    Vitor, para complementar a sua resposta e a que dei no outro comentário, a fase de simplification é a fase 1 do processo de otimização onde na etapa
    contradiction detection é realizada a tentativa de encontrar contradições para salvar recursos (io,memória, cpu,etc.) usando o operador constant scan.

    No seu exemplo ele checou a nulabilidade, porém tem mais duas situações utilizadas por essa etapa dentro dessa fase: check constraints e contradição do próprio predicado. Veja dois exemplos sobre seu exemplo:

    Exemplo 1: ( check constraint )

    Adicionando um novo campo dataNascto datetime e uma check constraint ’01/01/2001′) vai ser detectado e utilizado o operador constant scan.

    Exemplo 2: contradição do predicado

    o select com esse predicado ( where dataNascto ’01/01/1991′ ) , não será necessário checar a constraint e será utilizado o operador constant scan.

    Abs.,

    Alexandre Araujo

    Resposta
  2. Alexandre Araujo (@ale_araujo16)

    Exemplo 1: ( check constraint )
    Adicionando um novo campo dataNascto datetime e uma check constraint menor [01/01/2000], o select com esse predicado (where dataNascto maior [01/01/2001]) vai ser detectado e utilizado o operador constant scan.
    Exemplo 2: contradição do predicado
    o select com esse predicado ( where dataNascto menor [01/01/1990] and dataNAscto maior [01/01/1991] ) , ele nem precisa checar a constraint e dispara o constant scan.

    Resposta

Deixe um comentário

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

Logotipo do WordPress.com

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

Foto do Google

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

Imagem do Twitter

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

Foto do Facebook

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

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.