2014-08-29 6 views
0

Je travaille actuellement sur l'optimisation de mon schéma de base de données en ce qui concerne les structures d'index. Comme je souhaite augmenter mes performances DDL, je suis à la recherche de candidats potentiels sur mon système Oracle 12c. Voici le scénario dans lequel je ne sais pas quelles pourraient être les conséquences sur la performance de la requête si je lâche l'index.Oracle: Possibilité de remplacer un index de colonne unique non unique par un index combiné unique?

Compte tenu de deux indices sur la même table: - non unique, index unique colonne IX_A (index colonne A) - index unique, combiné UQ_AB (index colonne A, B)

Utilisation de la surveillance index I trouvé que l'optimiseur de requête n'a pas choisi UQ_AB, mais seulement IX_A (probablement parce que c'est plus petit et donc plus rapide à lire). Comme UQ_AB contient la colonne A et en outre la colonne B j'aimerais déposer IX_A. Bien que je ne sois pas sûr si je reçois des pénalités de performance si je le fais. La sélectivité supérieure de l'index unique combiné a-t-elle une influence sur les plans d'exécution?

Répondre

0

Il pourrait le faire, bien qu'il soit très susceptible d'être mineur (habituellement). Bien sûr, cela dépend de diverses choses, par exemple de la taille des valeurs de la colonne B.

Vous pouvez regarder différentes colonnes USER_INDEXES pour comparer les deux indices, tels que:

  • BLEVEL: vous indique la « hauteur » de l'arbre d'index (bien, la hauteur est BLEVEL + 1)
  • LEAF_BLOCKS: combien de blocs de données sont occupés par l'indice des valeurs
  • DISTINCT_KEYS: comment « sélectif » l'indice est

(Vous devez avoir analysé la table d'abord pour ceux-ci soient exactes). Cela vous donnera une idée du travail qu'Oracle doit faire pour trouver une ligne en utilisant l'index.

Bien sûr, la seule façon d'être vraiment sûr est de comparer et de comparer les minutages et même de tracer les sorties.

+0

Merci pour votre réponse, je vais vérifier USER_INDEXES, en particulier la hauteur de l'index devrait être utile pour décider de laisser tomber l'index ou de le garder. Néanmoins, je vais essayer et laisser tomber les index et voir comment mes benchmakrs fonctionnent. Je n'étais tout simplement pas sûr s'il y avait une différence systématique dans la façon dont Oracle utilise des index combinés uniques dans son calcul de plan d'exécution. – Patze