Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 22/02/2006, 17h47   #1
Invité de passage
 
Inscription : mai 2002
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 6
Points : 2
Points : 2
Par défaut Condition pour indéxer

Bonjour

Je m'interroge un petit peu ce soir sur les index.
Avec une table assez simple contenant des enregistrements concernant des voitures qui doivent être réparées :
Code :
1
2
3
4
CREATE TABLE voiture (
id int auto increment,
immatriculation varchar(255),
repare int DEFAULT 0);
La colonne "repare" permet d'indiquer les voitures qui ont été réparées ou non.
Imaginons que je suis un trés bon garagiste et que je répare 100 000 voitures en une journée au bout d'une année je vais me retrouver avec une liste impressionnante de voitures réparées.
Pour récupérer rapidement les voitures qui ne sont pas encore réparées, j'ajoute un index sur la colonne "repare".
Et c'est à ce moment que mon interrogation arrive : mon index ne va stocker que deux valeurs différentes (0 ou 1) avec un nombre d'enregistrement qui va être plus importante que l'autre (1) puisque à terme il y aura plus de voitures réparées. Mais ma requête ne va se faire que sur les voitures qui ne sont pas réparées, donc trés peu d'enregistrements. Donc mon index va grossir pour rien.
Existe t'il un moteur de base de données qui permet de définir les valeurs qui doivent être indexées pour éviter que celui ci ne deviennent énorme ?
Ou peut être est ce mon implémentation qui est mal faite ?
J'ai regardé du côté de Mysql, PostgreSQL, et je n'ai rien trouvé.
La feuil
lafeuil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2006, 20h20   #2
Invité de passage
 
Inscription : mai 2002
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 6
Points : 2
Points : 2
Bon, en fait, je viens de trouver la réponse dans la documentation de PostgreSQL :
Ca s'appelle donc un "index partiel" ou en anglais "partial index".

Donc pour reprendre l'exemple précédent, la requête de création de l'index serait :
Code :
1
2
CREATE INDEX repare_idx ON voiture (repare)
WHERE repare=1;
Bonne soirée
La feuil
lafeuil 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 18h28.


 
 
 
 
Partenaires

Hébergement Web