Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonctionnalités cachées dans Oracle

"Les analyses de table complètes ne sont pas toujours mauvaises. Les index ne sont pas toujours bons."

Une méthode d'accès basée sur l'index est moins efficace pour lire les lignes qu'une analyse complète lorsque vous la mesurez en termes de lignes consultées par unité de travail (généralement par lecture logique). Cependant, de nombreux outils interpréteront une analyse complète de la table comme un signe d'inefficacité.

Prenons un exemple où vous lisez quelques centaines de factures à partir d'une table de factures et recherchez un mode de paiement dans une petite table de recherche. L'utilisation d'un index pour sonder la table de recherche pour chaque facture signifie probablement trois ou quatre io logiques par facture. Cependant, une analyse complète de la table de recherche en préparation d'une jointure par hachage à partir des données de la facture ne nécessiterait probablement que quelques lectures logiques, et la jointure par hachage elle-même se compléterait en mémoire presque sans frais.

Cependant, de nombreux outils examineraient cela et verraient "analyse complète de la table" et vous diraient d'essayer d'utiliser un index. Si vous le faites, vous venez peut-être de désaccorder votre code.

Incidemment, le recours excessif aux index, comme dans l'exemple ci-dessus, entraîne l'augmentation du "Buffer Cache Hit Ratio". C'est pourquoi le BCHR est pour la plupart un non-sens en tant que prédicteur de l'efficacité du système.