2009-11-20 4 views

Répondre

3

Dans oracle de cas vient avec un mauvais plan d'exécution et vous avez vraiment vraiment doivent lui dire quel index utiliser (est très rare, mais ça arrive), vous pouvez optimiseur conseils de l'utilisateur:

SELECT /*+ INDEX(mytable myindex) */ foobar from mytable 

mais ce devrait être votre dernier recours. Avant même d'essayer de le faire, utilisez

execute dbms_stats.gather_table_stats('myschema','mytable') 

pour indiquer à Oracle d'analyser la table; j'espère, il va savoir quand utiliser l'index de cette façon.

+2

En fonction de la version de la base de données et de certains paramètres, un appel à 'DBMS_STATS.GATHER_TABLE_STATS' peut ne pas recueillir automatiquement les statistiques d'index. Dans ce cas, nous devons utiliser 'DBMS_STATS.GATHER_INDEX_STATS' ou définir explicitement le paramètre' CASCADE': 'execute dbms_stats.gather_table_stats ('myschema', 'mytable', cascade => TRUE)' – APC

4

Vous n'avez rien à faire pour utiliser un index dans une requête de sélection - Oracle décidera quel index, le cas échéant, aidera le mieux à effectuer la requête. L'index aide les performances dans certaines requêtes (pas toutes) en fournissant un raccourci vers les données que vous voulez. Vous devriez lire sur les index dans le Oracle Concepts Guide - lire la section intitulée "Aperçu des index".

2

Habituellement, vous n'avez rien à ajouter sur la requête pour utiliser l'index. L'évaluateur de plan d'Oracle choisira (espérons-le) la meilleure façon d'exécuter cette requête pour vous. C'est l'un des principes de Codd pour la base de données relationnelle.

Lorsque créer des index peut améliorer les performances?

Plusieurs scénarios. Certains d'entre eux:

  1. Lorsque vous essayez de rechercher un critère (ex: select * from foo where field = 121, il vous aidera si votre table est grand et vous avez un index sur champ)
  2. Lorsque vous voulez trier vos résultats. (Ex: select * from foo order by field, il vous aidera si votre table est grande et vous avez un index sur champ)
  3. Lorsque vous effectuez rejoint
Questions connexes