Hoje ao otimizar uma query, tive a brilhante idéia de criar uma view indexada. Criei a view com o cuidado de utilizar as tags para evitar os erros de ARITH ABORT, e lá fui eu. Alterei a procedure que antes usava a tabela diretamente e direcionei o select para a view recém-criada. Comentei o cabeçalho da view para analisar o execution plan e para minha surpresa, a query estava usando uma referência direta a tabela, ignorando a view e os índices recém-criados.
Pesquisando na net, encontrei um artigo falando sobre o problema e descobri uma nova query hint: WITH (NOEXPAND)
Basicamente, o query processor estava analisando a view que eu criei e a considerando um view comum e a expandindo, acessando diretamente a tabela. Adicionando o hint NOEXPAND, a expansão da query é evitada e a query é acessada, e um ótimo INDEX SEEK foi utilizado para a query.
Mais um usuário feliz!
Até a próxima!
Nenhum comentário:
Postar um comentário
Leave your comment here!