Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

A.Aguiar

problemas com indice

Recommended Posts

Estou analisando uma query "Select" e percebi que ela não usa todos os indice que deveria, por que isso acontece ?

 

Li no linha de código que se eu colocar algum campo em uma função como sum() ou Group By o Oracle não usa o indice deste campo, isso é verdade ?

 

SELECT

SERITIPO,

sum(IFATPLIQ)

FROM

TABELA_IFAT

LEFT JOIN TABELA_CFAT ON CFATEMPE = IFATEMPE AND CFATDOCU = IFATDOCU AND CFATSERI = IFATSERI

LEFT JOIN TABELA_SERI ON SERIEMPE = IFATEMPE AND SERICODI = IFATSERI

WHERE cFATDATA >= '2006-10-01' AND

cFATDATA <= '2006-10-03'

GROUP BY SERITIPO

 

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente.

 

Funções na cláusula WHERE não passaram por índices, por isso, que a Oracle tem um índice exclusivo para SELECT que se baseiam em funções, que são os índices baseados em Função, ou Index Fuction.

 

Os planos de execução se alteram conforme a escrita do SQL, tanto utilizando funções agragadas, analiticas ou próprias, o índice baseado em função, justamente, trabalha em cima da função que foi criado para ele, especifica, deixando assim, sua consulta mais rápida, como um índice B-TREE ou BITMAP faria.

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/natal_ohmy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.