A.Aguiar 0 Denunciar post Postado Dezembro 18, 2006 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
alphamek 2 Denunciar post Postado Dezembro 18, 2006 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