VIVEZ LE
FOOTBALL !

Oracle - Optimisation des requêtes


Oracle est fourni avec un optimiseur qui permet d'optimiser le plan
d'exécution d'une requête. Parfois, les caractéristiques des données
dans la base de données sont en évolution rapide, afin que l'optimiseur
(ses statistiques) soit mis à jour. Dans ce cas, les hints pourraient
aider.Soit hint le nom d'un hint. Il est intégré dans une requête comme
suit :

SELECT /* + hint(table) */ column1, column2 FROM table WHERE condition;

Les indications de fonctionnement (hint) peuvent être classées comme suit:

1. hint pour l'optimisation des résultats :
  • ALL_ROWS : il est habituellement utilisé pour le traitement par lots

ou les systèmes d'entreposage de données. ALL_ROWS indique à
l'optimiseur de faire en sorte d'utiliser le minimum de ressource pour
sortir le résultat complet.
  • FIRST_ROWS : L'optimiseur a pour objectif de retourner la première

ligne de la requête avec un temps de réponse minimum.
  • CHOOSE : prend en compte les statistiques si elles existent et utilise

l'optimiseur basé sur les coûts.
  • RULE : L'optimiseur ne détermine le plan d'exécution qu'au travers de

règles stricts sans tenir compte du contexte (statistiques et coûts des
accès) ou d'autres hints spécifiés dans la requête.
2. hint pour les chemins d'accès :
  • CLUSTER : demande à l'optimiseur de ramener les données d'une table

clustérisée.
  • FULL : pour le parcours complet de la table.
  • ROWID : recherche les lignes par rowid
  • INDEX (index) pour forcer l'utilisation de l'index "index".
  • INDEX pour calculer le coût pour chaque index disponible et utilise le

meilleur.
  • INDEX_ASC, INDEX_COMBINE, INDEX_DESC, INDEX_FFS, INDEX_JOIN, NO_INDEX,

HASH, AND_EQUAL.

3. hint pour les transformations de requêtes : FACT, MERGE, NO_EXPAND,
NO_EXPAND_GSET_TO_UNION, NO_FACT, NO_MERGE, NOREWRITE, REWRITE,
STAR_TRANSFORMATION, USE_CONCAT.

4. hint pour les opérations de SQL join : DRIVING_SITE, HASH_AJ,
HASH_SJ, LEADING, MERGE_AJ, MERGE_SJ, NL_AJ, NL_SJ, USE_HASH, USE_MERGE,
USE_NL.

5. hint pour l'exécution parallèle: NOPARALLEL, PARALLEL,
NOPARALLEL_INDEX, PARALLEL_INDEX, PQ_DISTRIBUTE.

6. hint supplémentaires : ANTIJOIN, APPEND, BITMAP, BUFFER, CACHE,
CARDINALITY, CPU_COSTING,DYNAMIC_SAMPLING, INLINE, MATERIALIZE,
NO_ACCESS, NO_BUFFER, NO_MONITORING, NO_PUSH_PRED, NO_PUSH_SUBQ,
NO_QKN_BUFF, NO_SEMIJOIN, NOAPPEND, NOCACHE, OR_EXPAND, ORDERED,
ORDERED_PREDICATES, PUSH_PRED, PUSH_SUBQ, QB_NAME, RESULT_CACHE,
SELECTIVITY, SEMIJOIN, SEMIJOIN_DRIVER, STAR, SWAP_JOIN_INPUTS,
USE_ANTI, USE_SEMI.
Publié par wjaouadi - Dernière mise à jour le 3 mai 2010 à 16:35 par spe2d
Ce document intitulé « Oracle - Optimisation des requêtes » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Suggestions
  •  Oracle - Optimisation des requêtes
  •  Oracle - Optimisation des opérations de tri » Fiches pratiques : Lorsque nous effectuons une opération de tri, nous remarquons l’augmentation du nombre d’entrée/sortie sur le disque. Pour palier à cette augmentation qui ralentit quelque part les performances de nos requêtes, il faut augmenter la valeur du...
  •  Oracle - Optimiser les performances de l'Import/Export » Fiches pratiques : Optimiser les performances de l’Import/Export Utiliser « commit=y » Adapter la taille du buffer au besoin « BUFFER=…. » Il est préférable de désactiver les triggers, les contraintes et supprimer les index avant l’import et les recréer après...
  •  [SQL] Optimisation de requête (Résolu) » Meilleure réponse: salut, je ne sais si ça va marcher mais essayes comment, qaund tu fait ta requète à la fin tu rajoute: ....... ....... Order by id (tu met l'ordre que tu veux faire) je pense que ça peut marcher
  •  Optimisation de requêtes » Bonjour, Je veux optimiser mes requêtes en créant des index et des tables de hachage sur mes tables. Et j'utilise parallèlement un explain plan pour voir le plan d'exécution de mes requêtes. Cependant mes couts restent les mêmes avec ou sans...
  •  Extraction ORACLE dans Excel requete SQL » Meilleure réponse: Salut, Je suis pas très versé dans la syntaxe officielle standardisée, aussi je peux rien dire sur ce "JOIN" Par contre, je t'enjoins de tester SELECT tdmx_id FROM TN_DOCUMENTS, ( SELECT object_id2 FROM DOCUME0_TREE START WITH OBJECT_ID
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Oracle - Récupérer les mots de passe perdus
Oracle - Connexion à une base Oracle en php