Forçando um índice no Oracle

[ad#texto]

O Oracle tem um controle estatístico bem inteligente, que tem a função de determinar, entre outros aspectos qual o melhor índice da tabela aplicar a sua QUERY, tudo isso para assegurar o menor custo possível, resumindo, ele pensa para otimizar a performance da sua QUERY, aliviando a carga do desenvolvedor PL/SQL, note ele vai ajudar o desenvolvedor e não substitui-lo.

Porém, embora bem funcional não seja perfeito, existem casos que a coleta de estatísticas pode induzir o Oracle a utilizar um índice menos otimizado para a situação, é aí que devemos então forçar qual índice deve ser utilizado.

A sintaxe básica é a seguinte:

/*+ index(nome_tabela nome_indice)*/

Isso mesmo, o comando é adicionado como um comentário na sua QUERY, veja alguns exemplos:

DELETE /*+ index(nome_tabela nome_indice)*/
FROM sua_tabela f
WHERE f.cod_campo = 1
 AND f.ind_valor = ‘x’

Ou se preferir pode utilizar em um SELECT também.

SELECT /*+ index(nome_tabela nome_indice)*/
FROM sua_tabela f
WHERE f.cod_campo = 1
 AND f.ind_valor = ‘x’

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.