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 :

INDEX et optimisation


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Par défaut INDEX et optimisation
    bonjour,
    J'ai 2 tables : table1 et table2. chacune a 40 000 lignes. il y a 4 champs sur chacune des 2 tables.
    table1
    id_tab1, nom_tab1, date_tab1, desc_tab1
    table2
    id_tab2, detail_tab2, encoredudetail_tab2, id_tab1
    N'étant pas le concepteur des 2 tables, je ne peux qu'ajouter des index (c'est déjà pas mal !!). Il n'y a pas de clé primaire, ni de clé étrangère.
    La raison est que les données arrive en brut dans les 2 tables et que les doublons nous interressent.
    Si je fais un
    select * FROM table1, table2 WHERE table1.id_tab1 = table2.id_tab1
    Ca prend beaucoup de temps.
    En faisant un explain, on voit bien qu'il y a des reqscan sur les table2.
    J'ai créé donc 2 index : un sur table1.id_tab1 et l'autre sur table2.id_tab1.
    Je fais un vacuum, et je relance.... Pareil !! Il fait encore des reqscan.
    D'où vient le problème ??? Est il possible d'empêcher les reqscan
    A+

  2. #2
    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
    As-tu fait un vacuum ou un vacuum analyze ?
    Les indexes ont un coût, ils ne sont pas forcément utilisés si l'optimiseur Postgresql estime que l'accès full aux tables est plus rapide
    Généralement s'il faut retourner au moins 25-30% des lignes de la table, l'accès full est moins coûteux
    Quel est le plan d'exécution exact de ta requête ?
    Combien de lignes dans chacune des 2 tables seront prise en compte pour ta requête ?
    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/

  3. #3
    Membre expérimenté Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Par défaut
    Les requêtes indiquées ci dessus ne mentionnaient pas qu'il s'agissait de vue.

    Des ANALYSE ont été fait. Il s'agit des distincts. En fait, (et c'est normal), il ne faut pas utiliser de distinct dans les vues mais uniquement lors des appels de vue.



    Perf ok,

    A+

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

Discussions similaires

  1. clef, indexes et optimisation
    Par NorexaMS dans le forum Firebird
    Réponses: 11
    Dernier message: 23/02/2009, 08h21
  2. index et optimisation
    Par babarincairo dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/10/2006, 17h44
  3. [2000] Index et optimisation
    Par Débéa dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 25/04/2006, 11h38
  4. Requetes et Index pour optimisation...
    Par manuds dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/03/2006, 09h05
  5. [Oracle 9] Vue materialisée indexée et optimisation
    Par scornille dans le forum Oracle
    Réponses: 4
    Dernier message: 18/11/2005, 15h11

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