2008-11-16 5 views
3

Si je publie une question à propos d'une requête sur une base de données Oracle, que dois-je inclure dans ma question pour que les gens puissent me répondre? Comment devrais-je obtenir cette information?Si je publie une question sur les performances des requêtes Oracle SQL, que dois-je inclure dans ma question?

La simple fourniture de la requête peu performante peut ne pas suffire.

+0

Je dois poser la question: pourquoi est-ce un wiki communautaire? –

+0

Parce que je veux vraiment que cette question existe afin que nous puissions l'indiquer quand quelqu'un publie un message "Pourquoi cette requête est-elle lente?" question sans fournir d'informations utiles sur les tables implique, les indices ou waht qu'ils essaient d'atteindre. –

+0

Une méta-question ... Sûrement que ce n'est pas lié à la programmation? : P –

Répondre

3

Idéalement, obtenir le plan complet de requête à l'aide DBMS_XPLAN.DISPLAY_CURSOR en utilisant la sql_id et child_cursor_id de v $ sql. A défaut (par exemple, sur les anciennes versions), essayez v $ sql_plan et incluez les prédicats de filtre et d'accès. EXPLAIN PLAN est très bien s'il montre réellement le plan qui a été utilisé.

Version DB et édition (Express/Standard/Entreprise). Peut-être l'OS aussi. SELECT * FROM V $ VERSION

Si vous avez des paramètres de base de données non standard, il est utile de savoir (surtout tout ce qui concerne l'optimiseur). select * from v $ parameter où rownum < 5 et isdefault! = 'TRUE'; * Si vous faites de contexte de nom de trace 10053 pour toujours, niveau 1 'événements cette session alter et analyser une requête, il y aura un fichier journal qui inclura tous les paramètres utilisés lors de l'optimisation d'une requête *

Les tailles de table et les distributions de colonnes du monde réel (par exemple, il s'agit d'une table de millions de lignes, avec 30% de lignes étant «rouges», etc.). Et les statistiques pertinentes sur USER_TABLES, USER_TAB_COLUMNS.

De combien de temps il a l'air, plus toutes les statistiques SQL disponibles (résultats cohérents, lectures physiques) à partir de v $ sql.

Aussi, qui pensez-vous qu'il devrait être en mesure de courir plus vite. Pensez-vous qu'il existe un meilleur plan ou que vous ne faites que croiser les doigts?

3

Le plan de requête est toujours utile

4
  • La définition du schéma des tables impliquées.
  • Les index définis sur ces tables.
  • La requête que vous exécutez.
  • Le plan d'exécution de requête résultant
+0

Cela s'applique également sur SQL Server –