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

Requêtes PostgreSQL Discussion :

Non utilisation de l'index


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut Non utilisation de l'index
    Bonjour

    voici ma requete
    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
    SELECT a.id_serv,a.id_app,sum(a.obj_sauve),sum(a.vol_sauve),
    sum(a.nb_sauve),sum(a.err_sauve),sum(a.obj_rest),
    sum(a.vol_rest),sum(a.nb_rest),sum(a.err_rest)
    ,a.id_dom_1,a.id_dom_2,a.id_dom_3,
    a.id_dom_4,a.id_dom_5,a.id_dom_6,
    a.id_dom_7,a.id_dom_8
    FROM tab_stat_app_jour a,domaines b
    WHERE a.date>=to_date('01/03/2010', 'DD/MM/YYYY')
    AND a.date<to_date('01/03/2010', 'DD/MM/YYYY')+ '1 month'::interval
    AND b.domaine='mon_domaine'
    And (b.id_dom=a.id_dom_1
    or b.id_dom=a.id_dom_2
    or b.id_dom=a.id_dom_3
    or b.id_dom=a.id_dom_4
    or b.id_dom=a.id_dom_5
    or b.id_dom=a.id_dom_6
    or b.id_dom=a.id_dom_7
    or b.id_dom=a.id_dom_8)
    group by a.id_serv,a.id_app,
    a.id_dom_1,a.id_dom_2,a.id_dom_3,
    a.id_dom_4,a.id_dom_5,a.id_dom_6,
    a.id_dom_7,a.id_dom_8;
    J'ai essayé de mettre un index sur le champ date ou sur le champ id_serv.
    Dans les deux cas, l'index n'est pas utilisé. Hors comme je commence à avoir pas mal de donnée, la durée du traitement evolue considerablement.
    Je passe de 14mn à presque 30 mn maintenant
    Que faire .....
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Il y a peut-être des index plus judicieux à trouver.

    Peux-tu poster le EXPLAIN de ta table ?

    Cordialement,

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Vous avez un OR dans votre cluse WHERE portant sur la même table que votre colonne DATE. Dès lors aucun index ne peut être utilisé car le prédicat n'est pas "Sargable".

    Revoyez votre modèle de donnée pour expurger cet immonde groupe de OR, car vu la répétition des colonnes (id_dom_1, id_dom_2, id_dom_3...) vous violez la première forme normale.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Merci SQLpro pour ta réponse.

    Par contre, je vais avoir du mal à modifier mon modèle de donnée.
    Explication:
    J'ai un serveur qui est rattaché à une application et cette application est rattaché au minimum deux domaines maximum huit.
    Pour eviter la redondance des données, que j'ai créé cette table.
    Car, un serveur peut evolué dans le temps. Ce qui veut dire changer d'application.

    Par contre, je suis preneur sur toute piste me permettant de faire evoluer mon modéle de donnée.
    J'espère avoir été suffisament claire.
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Eh bien justement, créé une table des dommaines de rattachement et fais une jointure avec. Du coup tu pourras mettre un index efficace.

    Toute table T comptant N colonne (C1, C2, C3...) et comportant une clef (sur les colonnes (Cx, Cy, Cz...), peut être remplacée par deux tables T1 et T2 plus petites qui partagent la même clef : T1 (Cx, Cy, Cz, C1) T2 (Cx, Cy, Cz, C2, C3, C4)

    S'il existe des colonnes de groupe répétitifs, alors il faut ajouter dans la seconde table une colonne supplémentaire participant à la clef pour pallier à la répétition :
    T1 (Cx, Cy, Cz, C1) T2 (Cx, Cy, Cz, Cn, C2, C3, C4)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    voici l'avancé de mes reflexions
    Creations de deux tables en lieu et place de celle existante
    La 1ere
    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
    mabase=# \d tab_stat_app_jour_dom1
    Table "public.tab_stat_app_jour_dom1"
      Column   |  Type   | Modifiers
    -----------+---------+-----------
     id_serv   | integer |
     date      | date    |
     obj_sauve | integer |
     vol_sauve | integer |
     nb_sauve  | integer |
     err_sauve | integer |
     obj_rest  | integer |
     vol_rest  | integer |
     nb_rest   | integer |
     err_rest  | integer |
     id_app    | integer |
     id_dom_1  | integer |
    et la deuxieme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    mabase=# \d tab_stat_app_jour_dom2
    Table "public.tab_stat_app_jour_dom2"
      Column  |  Type   | Modifiers
    ----------+---------+-----------
     id_serv  | integer |
     date     | date    |
     id_app   | integer |
     id_dom_2 | integer |
     id_dom_3 | integer |
     id_dom_4 | integer |
     id_dom_5 | integer |
     id_dom_6 | integer |
     id_dom_7 | integer |
     id_dom_8 | integer |
    ma nouvelle requete est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT a.id_serv,a.id_app,sum(a.obj_sauve),sum(a.vol_sauve),
    sum(a.nb_sauve),sum(a.err_sauve),sum(a.obj_rest),
    sum(a.vol_rest),sum(a.nb_rest),sum(a.err_rest)
    ,a.id_dom_1
    FROM tab_stat_app_jour_dom1 a,domaines b
    WHERE a.date>=to_date('01/03/2010', 'DD/MM/YYYY')
    AND a.date<to_date('01/03/2010', 'DD/MM/YYYY')+ '1 month'::interval
    AND b.domaine='mon_domaine'
    And b.id_dom=a.id_dom_1
    group by a.id_serv
    j'ai ensuite essayé de créer un index sur le champ date ou le champ id_serv sur la table tab_stat_app_jour_dom1 mais l'index n'est toujours pas utilisé.
    A mon avis j'ai loupé quelque chose
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Pour les questions de performance de requêtes, il faut poster le EXPLAIN ANALYZE pour avoir les éléments d'analyse.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Non, la première table ne doit pas contenir d'id_dom
    et la deuxième table n'est pas bonne !

    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
     
    mabase=# \d tab_stat_app_jour_dom2
    TABLE "public.tab_stat_app_jour_dom2"
      COLUMN  |  Type   | Modifiers
    ----------+---------+-----------
     id_serv  | integer |
     date     | date    |
     id_app   | integer |
     id_dom_2 | integer |
     id_dom_3 | integer |
     id_dom_4 | integer |
     id_dom_5 | integer |
     id_dom_6 | integer |
     id_dom_7 | integer |
     id_dom_8 | integer |
    Il faut la construire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mabase=# \d tab_stat_app_jour_dom2
    TABLE "public.tab_stat_app_jour_dom2"
      COLUMN  |  Type   | Modifiers
    ----------+---------+-----------
     id_serv  | integer |
     date     | date    |
     id_app   | integer |
     id_n     | integer |
     id_dom   | integer |
    et rajouter à votre clef la colonne id_n

    Dès lors votre requête ferait quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT a.id_serv, a.id_app, sum(a.obj_sauve),sum(a.vol_sauve),
           sum(a.nb_sauve), sum(a.err_sauve), sum(a.obj_rest),
           sum(a.vol_rest), sum(a.nb_rest), sum(a.err_rest),
           a.id_dom
    FROM   tab_stat_app_jour_dom1 a
           INNER JOIN domaines b ON b.id_dom=a.id_dom_1
           INNER JOIN 
    WHERE  a.date>=to_date('01/03/2010', 'DD/MM/YYYY')
       AND a.date<to_date('01/03/2010', 'DD/MM/YYYY')+ '1 month'::interval
       AND b.domaine='mon_domaine'
       AND a.id_n = 1
    GROUP BY a.id_serv, a.id_app, a.id_dom_1
    désolé de ne pas pouvoir vous en dire plus car vous n'avez pas posté le DDL de vos table ni de jeu d'essais.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     id_serv |    date    | obj_s | vol_s | nb_s | err_s | id_app | id1 | id2 | id3 | id4 | id5 | id6 | id7 | id8
    ---------+------------+-------+-------+------+-------+--------+-----+-----+-----+-----+-----+-----+-----+-----
       35598 | 2010-03-01 | 30507 |  4579 |    1 |     0 |    760 | 305 |  60 | 103 | 107 | 306 | 345 | 357 | 360
       35598 | 2010-03-02 | 33566 |  4724 |    1 |     0 |    760 | 305 |  60 | 103 | 107 | 306 | 345 | 357 | 360
       35598 | 2010-03-03 | 34228 |  4873 |    1 |     0 |    760 | 305 |  60 | 103 | 107 | 306 | 345 | 357 | 360
       35598 | 2010-03-04 | 34739 |  4995 |    1 |     0 |    760 | 305 |  60 | 103 | 107 | 306 | 345 | 357 | 360
    Je vais donc expliquer à quoi tout cela correspond.
    Tous les jours, il y a des sauvegardes qui sont effectuées pour un serveur (id_serv). On recupere le nombre d'objets sauvegardes (obj_s), le volume sauvegarde (vol_s), le nombre de sauvegarde (nb_s) et le nombre d'erreur de sauvegarde (err_s) qui ont été remontés au cours de la journée.
    Ce serveur est rattaché une application (id_app) et cette application est rattaché entre deux à huit domaines (id1 à id8)
    Dans la table domaines. On trouve la traduction du id_dom
    Ensuite, une fois par mois je dois calculer les valeurs mensuelles par serveur . C'est d'ailleurs à cela que devra servir la requete
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    vous n'avez toujours pas posté le DDL de vos table ni de jeu d'essais.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE ...
     
    INSERT INTO ...
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  11. #11
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Voici la création des tables
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ######################### creation table :tab_stat_app_jour
    CREATE TABLE tab_stat_app_jour(
      id_serv integer,
      date date,
      obj_sauve integer,
      vol_sauve integer,
      nb_sauve integer,
      err_sauve integer,
      obj_rest integer,
      vol_rest integer,
      nb_rest integer,
      err_rest integer,
      id_app integer,
      id_dom_1 integer,
      id_dom_2 integer,
      id_dom_3 integer,
      id_dom_4 integer,
      id_dom_5 integer,
      id_dom_6 integer,
      id_dom_7 integer,
      id_dom_8 integer
    );
    GRANT ALL ON TABLE tab_stat_app_jour TO apache;
    GRANT ALL ON TABLE tab_stat_app_jour TO admindb;
    CREATE INDEX tab_stat_app_jour_idx
                            ON tab_stat_app_jour (id_serv);
     
    ######################### creation table : domaines
    CREATE TABLE domaines (
    id_dom      int2 PRIMARY KEY,
    domaine     varchar(75),
    type_dom    int2,
    l_domaine   varchar(40),
    site_ges    varchar(2),
    visible   int2,
    check_baf   int2,
    methode     int2
    );
     
    GRANT ALL ON domaines TO apache;
    GRANT ALL ON domaines TO admindb;
     
    CREATE SEQUENCE seq_domaines increment 1;
    GRANT ALL ON seq_domaines TO admindb;
    GRANT ALL ON seq_domaines TO apache;
    Ci-joint un jeu d'essai
    Fichiers attachés Fichiers attachés
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

  12. #12
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Juste une petite question, il me semble avoir ajouté ce que l'on me demandait. Malgrés cela, ça va faire plus d'un mois que je n'ai plus de nouvelle. C'est encore pas bon, ce que j'ai mis
    Sachant que j'ai mis la derniere version des tables. Car, je n'ai rien compris pour les modifier.
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par JUSTIN Loïc Voir le message
    Juste une petite question, il me semble avoir ajouté ce que l'on me demandait.
    Pour la question "Pourquoi tel index n'est pas utilisé" qui est la question initiale, il faut poster l'explain analyze de la requête, et ça c'est resté sans réponse.

  14. #14
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Explain analyze n'est pas le bon. Car ce n'est pas cela qui me provoque la derive du temps de traitement. Pour le traitement journalier, je fais la somme des données journalieres par serveur. Ensuite, je verifie pour chaque serveur que le traitement n'a pas déja eu lieu et c'est ce second traitement qui me pose probleme. Car quand il n'y a pas beaucoup de donnée cela va mais au bout d'un mois la durée de traitement s'allonge.
    voici l'explain analyze
    QUERY PLAN
    ---------------------------------------------------------------------------------------------------------------
    Seq Scan on tab_stat_app_jour (cost=0.00..30.00 rows=1 width=8) (actual time=95.139..121.643 rows=1 loops=1)
    Filter: ((id_serv = 108394) AND ((date)::text ~~ '2010-06-07'::text) AND (id_app = 1446))
    Total runtime: 121.786 ms
    Là, le temp de traitement est correcte car j'ai reinitialisé les tables.
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Tu parlais qu'une requête qui durait dans les 15mn mais celle-là prend 0.5s ??
    Le but étant de savoir à quoi faire sont passées toutes ces minutes, cet explain n'est pas forcément une bonne base d'analyse.

  16. #16
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Je viens de créer à nouveau un index sur ma table tab_stat_app_jour
    Et là, l'index est bien utilisé.
    Index Scan using tab_stat_app_jour_idx on tab_stat_app_jour (cost=0.00..1003.79 rows=1 width=8) (actual time=0.084..0.133 rows=1 loops=1)
    Index Cond: (id_serv = 108394)
    Filter: (((date)::text ~~ '2010-06-07'::text) AND (id_app = 1446))
    Total runtime: 0.194 ms
    Encore merci pour votre aide
    Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduis pas que c'est la cruche qui est vide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [11gR2] Non utilisation d'un index (optimiseur)
    Par punkoff dans le forum SQL
    Réponses: 29
    Dernier message: 22/10/2013, 15h34
  2. Non-utilisation d'index !
    Par CaptainT dans le forum Administration
    Réponses: 9
    Dernier message: 08/01/2009, 18h49
  3. indexation non utilisée pour chaînes de caractères
    Par ctobini dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/02/2008, 09h43
  4. [Optimisation] index non utilisé et using temporary
    Par jp_rennes dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/10/2006, 10h05
  5. [TUNING] pb non utilisation de l'index
    Par ruthene dans le forum Oracle
    Réponses: 10
    Dernier message: 13/04/2006, 17h02

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