IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Temps d'exécution d'une requête (1ère fois)


Sujet :

SQL Oracle

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Bon, on a fait des tas de trucs avec les DBA.

    Tout d'abord, plutôt que d'attendre d'un jour sur l'autre de refaire les tests de différence entre la 1ère exécution et la seconde, ils ont pu vider le cache de la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter system flush buffer_cache; --blocs de données
    alter system flush shared_pool; --analyse requete
    Ensuite sur un exemple pris à la seconde exécution, les temps sont très différents d'un outil à l'autre bien que tous soient en mode CHOOSE :
    DBA : TOAD : 22" / PL/SQL Developer : 9"
    Moi : CAST et SQL Developer : <2"

    On se met en mode trace pour analyser tout ça
    Dans tous les cas, le plan d'exécution est le même (1ère ou 2e exécution)
    Sur le pire des exemples, on a atteint 78" (CAST)
    1ère exécution

    2e exécution


    On s'aperçoit dans le détail que c'est la lecture des données sur le disque sur qui prend le plus de temps :


    Idée1 --> utiliser le conseiller Oracle (-->ne conseille rien)
    Idée2 --> faire un rebuild des index concernés
    Ca y est un "miracle" se produit et ce qui prenait 45" prend 5" et la requête ci-dessus qui prenait 78" ne prend plus que 45" (bon, c'est pas divisé par 5 comme j'espérais mais c'est nettement mieux).

    Les DBA m'ont dit que sur certaines des bases de PROD, un export/import des données était prévu, ce qui permet à Oracle de mieux s'organiser (blocs de données, etc) et que parmi les conséquences, ça implique aussi le recalcul des index.

    Par conséquent, le recalcul des stat ne suffit pas, il faut de temps à autre reconstruire aussi les index
    alter index IDX_MY_INDEX rebuild; (si tout le monde est déconnecté)
    alter index IDX_MY_INDEX rebuild online; (duplique l'index avant de le remplacer si personne n'est connecté : risque de dupliquer la mémoire)

  2. #22
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je n'aime ni votre analyse ni votre conclusion.

    Je vous le redis, la requête que vous exécutez ne répond pas à votre attente.
    Soit il manque des bouts (importants) dans votre requête (avec au moins un ORDER BY et un ROWNUM), soit ça vous renvoie un résultat avec une part de hasard mais ça vous convient ainsi.

    Commençons déjà par là.

  3. #23
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par stof Voir le message
    ...
    Ensuite sur un exemple pris à la seconde exécution, les temps sont très différents d'un outil à l'autre bien que tous soient en mode CHOOSE ...

    Par conséquent, le recalcul des stat ne suffit pas, il faut de temps à autre reconstruire aussi les index
    alter index IDX_MY_INDEX rebuild; (si tout le monde est déconnecté)
    alter index IDX_MY_INDEX rebuild online; (duplique l'index avant de le remplacer si personne n'est connecté : risque de dupliquer la mémoire)
    Un conseil, change de DBA il connait que dalle!

  4. #24
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Je n'aime ni votre analyse ni votre conclusion.
    OK, on va prendre les choses dans l'ordre :

    Citation Envoyé par Waldar Voir le message
    Je vous le redis, la requête que vous exécutez ne répond pas à votre attente.
    Qu'est-ce qui ne va pas dans l'une ou l'autre de ces requêtes (équivalentes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select EEECHAMP1, CCCCHAMP1 into V_EEECHAMP1, V_CCCCHAMP1 
    from
    (
    SELECT max(t1.DAT), t5.EEECHAMP1, t3.CCCCHAMP1
        FROM AAA t1
        JOIN BBB t2 ON t2.AAAIDT = t1.AAAIDT
        JOIN CCC t3 ON t3.BBBIDT = t2.BBBIDT
        JOIN DDD t4 ON t4.DDDIDT = t3.DDDIDT
        JOIN EEE t5 ON t5.EEEIDT = t4.EEEIDT
        WHERE t1.AAACRIT1 = 2
        AND t1.DAT <= to_date('2012-07-05', 'YYYY-MM-DD')
        AND t2.AAACRIT2 = 'TOTO'
        AND t3.CCCCRIT1 = 123
        GROUP BY t5.EEECHAMP1, t3.CCCCHAMP1
    )
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select EEECHAMP1, CCCCHAMP1 into V_EEECHAMP1, V_CCCCHAMP1 from              
    (
    SELECT t5.EEECHAMP1, t3.CCCCHAMP1
        FROM AAA t1
        JOIN BBB t2 ON t2.AAAIDT = t1.AAAIDT
        JOIN CCC t3 ON t3.BBBIDT = t2.BBBIDT
        JOIN DDD t4 ON t4.DDDIDT = t3.DDDIDT
        JOIN EEE t5 ON t5.EEEIDT = t4.EEEIDT
        WHERE t1.AAACRIT1 = 2
        AND t1.DAT <= to_date('2012-07-05', 'YYYY-MM-DD')
        AND t2.AAACRIT2 = 'TOTO'
        AND t3.CCCCRIT1 = 123
        order by t1.DAT desc
    )
    where rownum= 1

    Citation Envoyé par mnitu Voir le message
    Un conseil, change de DBA il connait que dalle!
    Ceci n'étant pas vraiment du pouvoir du petit développeur que je suis, mieux vaut peut-être réagir objectivement sur nos tests voire proposer vos solutions (promis quand je passe grand chef je vire tout le monde )

  5. #25
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par stof Voir le message
    Qu'est-ce qui ne va pas dans l'une ou l'autre de ces requêtes (équivalentes)
    Mais elles ne sont pas du tout équivalentes, c'est bien le problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    With MaTable as
    (
    select sysdate as dt, 'A' as c1, '1' as c2 from dual union all
    select sysdate - 1  , 'B'      , '2'       from dual union all
    select sysdate - 2  , 'C'      , '3'       from dual
    )
    select c1, c2
      from ( select max(dt), c1, c2
               from MaTable
            group by c1, c2);
     
    C1 C2
    -- --
    C  3 
    A  1 
    B  2 
     
     
    With MaTable as
    (
    select sysdate as dt, 'A' as c1, '1' as c2 from dual union all
    select sysdate - 1  , 'B'      , '2'       from dual union all
    select sysdate - 2  , 'C'      , '3'       from dual
    )
    select c1, c2
      from ( select c1, c2
               from MaTable
           order by dt desc)
     where rownum = 1;
     
    C1 C2
    -- --
    A  1
    La seconde requête répond elle au besoin que vous avez exprimé.

  6. #26
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Pourriez-vous préciser la version de votre base Oracle qui tourne en mode CHOSE ?

    Si vous regardez attentivement la première (très) petit image avec le résultat de la trace vous allez trouver que vous avez compte deux fois (exécutions de) la requête.

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Waldar Voir le message
    La seconde requête répond elle au besoin que vous avez exprimé.
    Oui, honte à moi; la seconde est bien celle qui tourne; l'autre c'était effectivement pour essayer de l'écrire autrement mais c'est pas du tout pareil.


    Citation Envoyé par mnitu Voir le message
    Pourriez-vous préciser la version de votre base Oracle qui tourne en mode CHOSE ?
    10.2

    Citation Envoyé par mnitu Voir le message
    Si vous regardez attentivement la première (très) petit image avec le résultat de la trace vous allez trouver que vous avez compte deux fois (exécutions de) la requête.
    C'est peut-être quand je l'ai exécuté d'une part et mon DBA d'autre part?

  8. #28
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    1) Pour Oracle 10g mettez le paramètre optimizer_goal = ALL_ROWS. CHOOSE c’était à l’époque où les ours blanc peupler la France.

    2) Je ne sais pas ce que vous avez fait avec votre DBA mais je vous indique que vos 78’’ sont cumulées pour deux exécutions de la requête et non pas une.

    3) Why are there so many Oracle related myths ? The Inconvenient Truth

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par mnitu Voir le message
    1) Pour Oracle 10g mettez le paramètre optimizer_goal = ALL_ROWS. CHOOSE c’était à l’époque où les ours blanc peupler la France.
    Et donc la mode Printemps/Ete 2012, c'est RULE, tu penses que ça serait miraculeux? C'est quand-même le mode de base d'Oracle le CHOOSE...
    En tous cas je ferai des tests avec et sans dans mon requêteur (CAST)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter session set optimizer_mode = choose
    alter session set optimizer_mode = rule
    Après faut voir où c'est paramétré pour Tibco mais c'est une autre histoire.

    PS : je ne vois pas "optimizer_goal" dans la table v$parameter

    Citation Envoyé par mnitu Voir le message
    2) Je ne sais pas ce que vous avez fait avec votre DBA mais je vous indique que vos 78’’ sont cumulées pour deux exécutions de la requête et non pas une.
    Bah j'ai exécuté ma requête tout seul et j'ai bien vu que ça a pris 78" (comment sur une seule demande de select j'aurais pu en avoir2?!)

    Citation Envoyé par mnitu Voir le message
    3)
    Je lirai ça (même si tous ces trucs dépassent mes compétences) car là c'est bloqué au boulot.

  10. #30
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par stof Voir le message
    Et donc la mode Printemps/Ete 2012, c'est RULE, tu penses que ça serait miraculeux? C'est quand-même le mode de base d'Oracle le CHOOSE...
    ...
    Non RULE c'est la carrément de la préhistoire! (et de plus j'vais dit ALL_ROWS)

    OPTIMIZER_MODE Initialization Parameter

    Chechez la valeur CHOOSE dedans ...

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    optimizer_goal (que je ne trouve pas dans v$parameter) est apparemment obsolète depuis la version 10g (et )

  12. #32
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Maintenant qu'on a compilé un peu plus d'informations, que donnent les performances de cette requête dans votre bloc PL/SQL (pas de execute immediate) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT /*+ FIRST_ROWS_1 */ EEECHAMP1, CCCCHAMP1
      INTO V_EEECHAMP1, V_CCCCHAMP1
      FROM ( SELECT t5.EEECHAMP1, t3.CCCCHAMP1
               FROM AAA t1
               JOIN BBB t2 ON t2.AAAIDT = t1.AAAIDT
               JOIN CCC t3 ON t3.BBBIDT = t2.BBBIDT
               JOIN DDD t4 ON t4.DDDIDT = t3.DDDIDT
               JOIN EEE t5 ON t5.EEEIDT = t4.EEEIDT
              WHERE t1.AAACRIT1 = 2
                AND t1.DAT     <= I_DAT
                AND t2.AAACRIT2 = I_AAACRIT2
                AND t3.CCCCRIT1 = I_CCCCRIT1
           ORDER BY t1.DAT DESC)
     WHERE ROWNUM = 1;
    Compte tenu que la variable I_DAT est déjà une date, nul besoin de la reconvertir en date.

  13. #33
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par stof Voir le message
    optimizer_goal (que je ne trouve pas dans v$parameter) est apparemment obsolète depuis la version 10g (et )
    Vous avez bien compris, c’est ce paramètre pour lequel la valeur CHOOSE à été défini à l’époque d’Oracle 7. Ce paramètre a été remplacé par optimizer_mode pour lequel la valeur CHOOSE n’est plus documentée.

    Dans la requête proposé par Waldar commencez par ne pas utiliser le hint SQL /*+ FIRST_ROWS_1 */

  14. #34
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Ce paramètre a été remplacé par optimizer_mode pour lequel la valeur CHOOSE n’est plus documentée.
    Donc la conclusion? Puisque je ne peux pas choisir un "ALL_ROWS" pour optimizer_goal et que RULE "c'est la carrément de la préhistoire", c'est que je suis dans le bon mode alors (?)

    Citation Envoyé par mnitu Voir le message
    Dans la requête proposé par Waldar commencez par ne pas utiliser le hint SQL /*+ FIRST_ROWS_1 */
    Bah en fait c'est la seule différence par rapport à ce qui était en place au début (puisque là il y avait la requête en "variables bind" sans effet supplémentaire) donc je suis passé directement en version hint SQL.
    Note : le to_date c'était pour donner un exemple mais je passe bien directement une date I_DAT

    Le souci, c'est qu'hier soir j'ai aussi recalculé les index donc difficile de juger des effets de cette modif seule.

    Aujourd'hui j'ai un jeu de données qui fait que j'ai eu 3 blocages (pas loin de 10s).
    Hier les exemples que j'ai eus avaient plus de lignes potentielles :
    1311 lignes pour l'exemple qui prend 22"
    1669 lignes pour l'exemple qui prend 25"
    Aujourd'hui les triplets qui ont bloqué avaient : 2305, 10920 et 8571 et pourtant j'ai noté des temps assez proches de 10s.
    J'aurais donc tendance à dire qu'il y a du mieux.
    En tous cas la différence 1ère exécution / 2e exécution demeure au fil des intégrations.


    Sauf autres idées de votre part (qui aboutisse à 0 timeout), je vais peut-être tester comment ça tourne quelques jours avec cette combinaison des 2 actions (reconstruction d'index + hint SQL) car il me faut plus de recul pour en tirer une conclusion sur la possible amélioration.

  15. #35
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par stof Voir le message
    Donc la conclusion? Puisque je ne peux pas choisir un "ALL_ROWS" pour optimizer_goal et que RULE "c'est la carrément de la préhistoire", c'est que je suis dans le bon mode alors (?)


    ...
    La conclusion : optimizer_mode = ALL_ROWS !

  16. #36
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par mnitu Voir le message
    La conclusion : optimizer_mode = ALL_ROWS !
    Bizarre ils en parlent pas dans l'aide de CAST, mais ça a l'air d'exister.
    Je demande un vide du cache et je repasse les 3 requêtes du jour qui ont bloqué pour remesurer les temps.
    PS : par contre ça peut très bien résoudre ce problème en particulier et en poser d'autres donc je n'y connais rien mais ça me paraît potentiellement dangereux comme modif.
    Setting the Optimizer Mode to Rule for Oracle servers

    If you want to change the Optimizer Mode for ALL connections to your server to Choose (from Rule the default setting) you can add the following option to the GloballySharedSettings.ini file:
    [global]
    ForceOptimizerChoose=1
    Which will send the following query to the server: alter session set optimizer_mode = choose

    To revert to the default Rule mode, add the following:

    [global]
    ForceOptimizerRule=1
    Which will send the following query to the server: alter session set optimizer_mode = rule

  17. #37
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Mais votre outil CAST, de quand date-t-il ?
    Y a-t-il un site de l'éditeur ?
    Je n'en ai jamais entendu parler.

  18. #38
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Mais votre outil CAST, de quand date-t-il ?
    Y a-t-il un site de l'éditeur ?
    Je n'en ai jamais entendu parler.
    Pareil, jamais entendu parler de ce truc là...

    Pour Stof, vous devrier vous référer à la doc Oracle, qui est la source d'information la plus complète et la plus fiable.
    Votre outil, qui parle encore de RULE et de CHOOSE, est resté bloqué à l'ère glaciaire comme Mnitu vous le disait au début.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  19. #39
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Concernant le hint, il me semble qu'il devrait plutôt être dans la sous requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT EEECHAMP1, CCCCHAMP1
      INTO V_EEECHAMP1, V_CCCCHAMP1
      FROM ( SELECT /*+ FIRST_ROWS_1 */ t5.EEECHAMP1, t3.CCCCHAMP1
      .......

  20. #40
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Mais votre outil CAST, de quand date-t-il ?
    Y a-t-il un site de l'éditeur ?
    Je n'en ai jamais entendu parler.
    Ouais vous avez raison... ah on n'est pas aidé avec les outils qu'on a :
    http://www.castsoftware.com

    Remarque de skuatamad : le hint doit-il être dans la sous-requête ou ça ne change rien?

    J'ai un peu de mal à comprendre mais pourquoi FIRST_ROWS_1 : si je regarde dans la liste des choix c'est FIRST_ROWS (tout court) qui est proposé, non?
    Et si je lis la description, je comprend qu'on passe provisoirement en mode "cost based", ce que fait de manière générale le mode ALL_ROWS.
    Par conséquent, si j'ai testé le hint SQL plus tôt, je n'obtinedrai rien de plus à tester en mode ALL_ROWS (?)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/06/2007, 12h10
  2. [MySQL] temps d'ouverture d'une connexion VS temps d'exécution d'une requête
    Par epoz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 18h06
  3. Calculer le temps d'exécution d'une requête
    Par BRAUKRIS dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/03/2007, 12h59
  4. [MySQL] Temps d'exécution d'une requête
    Par eon-of-the-scorn dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/07/2006, 11h06
  5. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo