banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Fri 24 July 2009 15:04

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 609

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9859
Site web

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 wink

À 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: LYON
Date d'inscription: 6 Aug 2007
Messages: 609

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9859
Site web

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: LYON
Date d'inscription: 6 Aug 2007
Messages: 609

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

 

Pied de page des forums

Powered by FluxBB