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’