Super Dicionário de Hints do Oracle
Quando trabalhamos com Oracle, um ponto importante para otimizar o desempenho das consultas SQL é entender como orientar o otimizador a escolher determinados planos de execução. É exatamente para isso que servem os hints.
Ao inserir hints (dicas) diretamente na consulta, podemos influenciar o Cost Based Optimizer (CBO) a tomar decisões mais adequadas em situações específicas.
O que são Hints?
Os hints são instruções especiais escritas em comentários dentro de uma consulta SQL, que afetam o plano de execução escolhido pelo Oracle. O formato geral é:
SELECT /*+ HINT_EXEMPLO */ coluna1, coluna2
FROM tabela
WHERE condicao;
- Comentário especial: O Oracle reconhece a estrutura
/*+ ... */
após oSELECT
. - Case sensitive: Tecnicamente, o texto do hint não faz distinção entre maiúsculas e minúsculas, mas é fundamental que a sintaxe e o nome do hint estejam corretos para que ele seja reconhecido.
- Uso do CBO: Qualquer hint (exceto o
RULE
) instrui o Oracle a usar o Cost Based Optimizer. Se a sintaxe do hint estiver incorreta, ele é simplesmente ignorado.
A
AND_EQUAL
- Função: Força o otimizador a fazer um “merge scan” de vários índices de coluna única.
- Sintaxe:
AND_EQUAL(tabela índice1 índice2 ...)
- Status: Depreciado no Oracle 10g e versões posteriores.
APPEND
- Função: Em instruções
INSERT
, faz uma inserção em direct path, ignorando espaço livre no bloco. Pode reduzir o volume de redo gerado quando a tabela está em modoNOLOGGING
. - Sintaxe:
INSERT /*+ APPEND */ INTO tabela ...
- Observação: Exige que a tabela não seja indexada de forma a impedir o uso de bulk inserts, e que não haja triggers ou constraints que impeçam direct path load.
- Status: Suportado em várias versões. Continua válido.