Como usar Hint no Oracle?

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 o SELECT.
  • 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.
  • SintaxeAND_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 modo NOLOGGING.
  • SintaxeINSERT /*+ 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.