Arquivos do Blog

Functions no Where – Oracle

Um problema de desempenho de um SELECT com
WHERE SUBSTR(CAMPO,1,8) = : PARAMETRO
A recomendação é a criação de índices baseados em funções (que serão abordados em futuros posts), porém os mesmos somente a partir da versão 10g. Caso a coluna CAMPO tenha um índice o mesmo não será utilizado fazendo com que a consulta tenha um plano de execução com TABLE FULL SCAN na respectiva tabela.
Para reverter a situação com versões anteriores ao Oracle 10g uma boa prática faz com que o plano de execução utilize o índice da coluna CAMPO:
WHERE CAMPO LIKE : PARAMETRO || ‘%’

O parâmetro deve ser passado corretamente para a alteração em sua aplicação. Exemplo Delphi : Copy(variavel,1,8);