Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos,
Gostaria da ajuda de vcs.
Tenho uma query que leva 30 minutos para ser executada. Ao analisar o query plan e o i/o statistics da query, verifiquei que o timizador escolheu fazer table scan na tabela que possui 260 mil registros, consumindo um alto logical reads.
logical reads: (regular=3925152 apf=0 total=3925152).
Verifiquei os índices da tabela e notei que não havia um índice adequado para está query, então criei o índice para atender essa query.
Porém ao executar novamente a query e analisar o plano de acesso vi que o otimizador continuava a fazer table scan ao invés de utilizar o índice criado.
Resolvi forçar o índice especificando-o na frente do nome da tabela na query. Com isso o otimizador passou a utilizar o índice, mas o logical reads diminuiu muito pouco, no entanto o tempo de execução caiu de 30 minutos para 1 minuto.
logical reads: (regular=312972 apf=0 total=312972)
O que não entendo é por que o otimizador não utiliza o índice criado e como pode ser tão mais rápido mesmo fazendo uma grande quantidade de logical reads?
A princípio pensei que fosse por estatística desatualizada, então rodei um update statistics para a tabela, mas não fez efeito.
Algúem tem alguma idéia do por que o otimizador não utiliza o índice sozinho?
Agradeço se algúem puder ajudar.
[ ]s
Carregando comentários...