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

PostgreSQL Discussion :

Requête SELECT interminable


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut Requête SELECT interminable
    Bonjour, pourriez-vous me dire pour l'execution de cette requête prend un temps phénoménal (plus de 7 minutes) sachant que le résultat ne retourne que 10 résultats environ ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT seq, loc, nom, group, date 
       FROM T_plan, T_trait, T_traitement
       WHERE T_plan.id = '999' 
       AND date LIKE '2006-09-13' 
       AND T_plan.id_trait = T_trait.id_trait 
       AND T_trait.id = T_traitement.id 
       AND est_actif='OUI' 
       AND status < 5 
       AND group ='NON'

    N.B. : la table T_plan contient 195000 enregistrements, la table T_traitement 1765 et la table T_trait 20500.

    Merci.

  2. #2
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Salut,
    Quelle version de PostgreSQL utilises-tu ? Je ne sais pas pour la dernière version, mais avant il fallait "faire du rangement" manuellement, en lançant régulièrement les commandes de la famille VACUUM et ANALYSE pour que les statistiques internes soient mises à jour.
    J'avais eu pas mal de problèmes de perfs avant de m'en rendre compte.

  3. #3
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Ok.

    Il me suffit donc de lancer VACUUM ANALYZE sur chaque table ?

  4. #4
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    La commande VACUUM ANALYSE FULL permet de mettre les stats à jour, et de réorganiser physiquement les données (libération d'espace inutilisé, etc.) sur le disque. Le problème est qu'elle verrouille les tables sur lesquelles elle travaille et que son exécution peut prendre du temps. Il est généralement recommandé de l'exécuter une fois par jour, en période creuse (la nuit par exemple).

    Sinon, la commande VACUUM ANALYSE seule en fait un peu moins (je ne sais plus exactement la différence), mais ne verrouille pas les tables, et s'exécute un peu plus vite.

    Enfin, la commande ANALYSE seule met simplement à jour les stats, ne verrouille pas les tables, et s'exécute généralement rapidement.

    Tu peux commencer par exécuter seulement ANALYSE pour voir si la situation s'améliore.
    Il existe aussi un démon pg_autovacuum qui gère tout ça seul. Mais en fonction des versions de PostgreSQL, il n'est pas fourni, ou alors il faut le compiler soi-même.

  5. #5
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    OK Merci

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

Discussions similaires

  1. Résultat commençant par un chiffre avec requête SELECT
    Par nicolas.pissard dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/04/2010, 13h31
  2. C'est possible dans une requête SELECT ?
    Par Kokito dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2005, 16h59
  3. Insertion multiple à base de sous requête SELECT
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2005, 16h34
  4. SQL Server 7.0 - Requête Select
    Par sangokus dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/03/2004, 10h32
  5. Optimisations mysql sur les requêtes SELECT: index
    Par leo'z dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2003, 13h23

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