Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/08/2011, 11h40   #1
Invité de passage
 
Inscription : février 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 25
Points : 3
Points : 3
Par défaut Index couvrant dans postgres ?

Bonjour,

Je souhaiterais savoir s'il existe des index couvrants sous Postgres (cf : http://sqlpro.developpez.com/cours/quoi-indexer/, voir VIII. Index couvrant), comme il peut en exister sous MSSQL. Ou existe-il une autre technique ?

J'ai cherché dans la doc postgres 8.2 (ma version) mais sans trouver rien de concluant sur la création des index.

Merci d'avance,

Denis
denis13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 14h04   #2
Membre Expert
 
Avatar de kain_tn
 
Homme
Inscription : mars 2005
Messages : 577
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations forums :
Inscription : mars 2005
Messages : 577
Points : 1 209
Points : 1 209
Les index couvrants existent bel et bien sous PostgreSQL:

Citation:
[...] A multicolumn B-tree index can be used with query conditions that involve any subset of the index's columns, but the index is most efficient when there are constraints on the leading (leftmost) columns. [...]
__________________
Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


Code C :
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(int argc, char **argv) {
 
    printf("So long, and thanks for the fish, Dennis...\n");
    return 0;
}
kain_tn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 16h36   #3
Invité de passage
 
Inscription : février 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 25
Points : 3
Points : 3
Bonjour,

En fait, je dois réaliser un outils de recherche de données, où je peux rechercher sur un type (équivalent d'une des colonnes), une valeur (la valeur de mon type) et une ou plusieurs bases (la colonne colbase de ma table).
Voici la requête :
Code :
1
2
3
4
 
SELECT *
FROM matable
WHERE colx LIKE 'mavaleur%' AND colbase IN (baseList);
où :
- les valeurs de retours : * sont fixes,
- le premier filtre colx est une colonne entre col1 et col4 varie,
- baseList est la liste de mes bases pouvant prendre les valeurs : 'E' ou 'A' ou 'P' ou 'E,A' ou 'E,P' ou 'A,P' ou 'E,A,P' varie,

Je souhaiterai optimiser au maximum cette requête car elle sera très souvent utilisée et le nombre de ligne pourra dépasser facilement les 500 000...

Pour l'instant j'ai indexé mes 4 colonnes équivalentes à mon type de recherche (colx dans mon exemple).

Si je comprends bien je dois ajouter à chaque index la colonne colbase :
Avant:
Code :
CREATE INDEX "idx_matable_colx" ON matable USING btree ("colx");
Après:
Code :
CREATE INDEX "idx_matable_colx" ON matable USING btree ("colx","colbase");
J'espère avoir été clair ...

Si besoin de précision n'hésitez pas de demander.

Merci d'avance,

Denis
denis13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 17h18   #4
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
En première approche, ces 4 index simples sur col1..4 paraissent suffisants.
Indexer en plus colbase n'apportera rien de bon s'il n'y a que 7 valeurs différentes dans cette colonne.
Comme le plan d'exécution dépend du contenu des colonnes, ça ne sert à rien de trop pré-supposer tel ou tel comportement de l'optimiseur, il faut le constater concrètement avec les vraies données et avec EXPLAIN ou EXPLAIN ANALYZE.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 10h04   #5
Invité de passage
 
Inscription : février 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 25
Points : 3
Points : 3
Merci pour vos réponses à bientôt.
denis13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h32.


 
 
 
 
Partenaires

Hébergement Web