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

Administration PostgreSQL Discussion :

Requête bizarrement lente


Sujet :

Administration PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut Requête bizarrement lente
    Bonjour à tous.
    je suis nouveau sur Postgres.
    J'ai la requête suivante qui est très lente (c'était pas terminé en 3 heures alors j'ai arrêté et relancé, mais c'etait la même chose) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from table1 t1 where not exists (select t2.id from table2 t2 where t1.id=t2.id)
    Je suis sur PIV 1,73 Ghz, 1Go de RAM, Win XP
    Postgres 8.2
    La table table1 contient 2 000 000 d'enregistrement
    La table table2 contient 1 500 000 enregistrements
    ID sont les clés primaires pour les deux tables

    Quelqu'un pourrait-il m'aider?
    Merci.

  2. #2
    Membre Expert
    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
    Par défaut
    Que dit l'EXPLAIN de la requête?

  3. #3
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut
    Citation Envoyé par estofilo Voir le message
    Que dit l'EXPLAIN de la requête?
    Explain plan :
    Seq Scan on table1 t1 (cost=0.00..40578854887.23 rows=882769 width=6)
    Filter: (NOT (subplan))
    SubPlan
    -> Seq Scan on table2 t2 (cost=0.00..22983.83 rows=1 width=4)
    Filter: ($0 = autoid)

  4. #4
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut
    Ca y est le problème est résolu. J'ai mis un index unique sur les colonnes id.
    Mais je croiais que les clés primaires sont indexés automatiquement ??
    En tout cas le problème est résolu, tant mieux.

  5. #5
    Membre Expert
    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
    Par défaut
    Oui une clef primaire a forcément un index associé, normalement il aurait dû l'utiliser dès le départ. Mais peut-être qu'il manquait un ANALYZE d'une ou des deux tables, ou alors que le dernier ANALYZE n'était plus conforme au volume des données suite à des insertions massives.

  6. #6
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Effectivement il manquait peut-être les stats ... Postgresql est assez similaire à Oracle et il faut régulièrement rafraîchir les stats
    De plus dans ce genre de requêtes avec un WHERE NOT EXISTS, c'est souvent utile niveau performances d'indexer la colonne servant de condition de jointure (la clé étrangère quoi)
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

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

Discussions similaires

  1. Requête trop lente, comment l'optimiser?
    Par getz85 dans le forum Langage SQL
    Réponses: 19
    Dernier message: 29/01/2008, 13h40
  2. [Oracle] Requête bizarre
    Par LAPLACE dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/10/2007, 16h16
  3. auto-killer une requête trop lente
    Par Nico57 dans le forum Oracle
    Réponses: 5
    Dernier message: 05/12/2006, 18h04
  4. Pourquoi cette requête est lente ?
    Par zenzo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/01/2006, 15h15
  5. Requête bizarre ... Order by sur 2 champs
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/06/2004, 14h38

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