#1 Fri 24 July 2009 15:04
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
POSTGIS: Index spatiaux
Bonjour,
Je viens de créer des tables de très grande dimension sous postgis (5 millions de lignes) et je me demande si je dois faire un index spatial, un index non spatial ou les deux puisque j'aurais à faire des requete spatiale et non spatiale. D'ailleurs peut-on faire deux index sur une même table ?
Je ne maitrise pas cette notion d'index: les seules choses que j'ai compris c'est que ca améliore la performance des requêtes et c'est gourmand en mémoire d'où le vacuum analyse que l'on doit faire après la création de l'index.
Merci d'avance pour vos réponses
Pascal PLUVINET
Hors ligne
#2 Fri 24 July 2009 15:24
Re: POSTGIS: Index spatiaux
Bonjour,
Tu peux faire autant d'index que tu veux ! Mais cela prend de la place surtout. Le VACUUM ANALYSE sert si je ne m'abuse à mettre à jour les statistiques de postgresql afin qu'il choisisse la meilleure stratégie lors des requêtes.
Pour le choix des indexes, il faut que tu fasses des index sur les champs (et seulement ceux-ci) que tu vas utiliser dans les filtres des requêtes ou dans les jointures. Exemple :
Code:
Select id, label FROM maTable INNER JOIN autreTable ON (champ1=champ2) WHERE maTable.code> 2 AND maTable.code< 10;
Tu dois faire un index sur code de MaTable, champ1 et champ2. Les index sur id et label sont inutiles ! Surtout sur un identifiant unique
À confirmer par un expert mais je pense que cela est correct.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Fri 24 July 2009 15:47
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSTGIS: Index spatiaux
Merci Yves,
Deux autres questions :
1) est-ce que les index ont un rôle dans le durée d'affichage des données dans QGIS? En effet, certaines couches mettent du temps à s'afficher dans Qgis.
2) Peut-on estimer la place que les index vont prendre?
Encore merci
Pascal PLUVINET
Hors ligne
#4 Fri 24 July 2009 15:58
Re: POSTGIS: Index spatiaux
Bonjour,
1/ oui puisqu'il permet de filtrer les données sur la zone d'étude. Si ta zone d'étude = l'extent de ta couche, l'index ne sert plus à rien.
2/ oui, voir même la mesurer. Mais là je te renvoi à la doc de Postgresql car je n'ai pas les info sous le coude. La taille est mesuré en PAGE, une page est fonction du système, ~ 4ko de mémoire (donc 10 pages = 40 ko). Postgresql te permet de trouver la taille de tes tables avec une requête.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#5 Fri 24 July 2009 16:13
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSTGIS: Index spatiaux
Re-merci Yves
Effectivement, on peut regarder la taille des bases et des tables :
Code:
SELECT pg_size_pretty(pg_database_size('nom_base')); SELECT pg_size_pretty(pg_relation_size('nom_table')); SELECT pg_size_pretty(pg_total_relation_size('nom_table')); ---(avec index)
Ce que j'aurais souhaité, ayant peu de place sur notre serveur, c'est connaitre la future taille de la table avant même de créer l'index. Mais bon , pas d'urgence...
Pascal PLUVINET
Hors ligne