Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
-
sandra1960
- Messages : 34
- Inscription : mar. mars 10, 2026 7:25 pm
Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
Bonjour, je galère avec PostGIS sur une requête qui cherche des points dans un rayon de 50km. La table a 3M d'entrées avec un index GIST. EXPLAIN montre un seq scan au lieu d'utiliser l'index... Des idées ?
Le cloud c'est l'ordi de quelqu'un d'autre
Re: Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
As-tu bien fait un VACUUM ANALYZE récemment ? Et vérifié que ta config mémoire est correcte (work_mem, shared_buffers) ? J'ai eu le même souci sur une appli de livraison.
Re: Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
Poste ton EXPLAIN complet. Souvent le problème vient d'une condition WHERE mal écrite. Utilises-tu ST_DWithin() ou une bbox ?
-
sandra1960
- Messages : 34
- Inscription : mar. mars 10, 2026 7:25 pm
Re: Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
Voici l'EXPLAIN :
```
Gather (cost=1000.00..1254783.67 rows=1 width=32)
-> Parallel Seq Scan (cost=0.00..1253783.57 rows=1 width=32)
Filter: (st_distance(geom, '010100...'::geometry) < 50000)
```
Je n'ai pas fait de VACUUM depuis 1 mois...
```
Gather (cost=1000.00..1254783.67 rows=1 width=32)
-> Parallel Seq Scan (cost=0.00..1253783.57 rows=1 width=32)
Filter: (st_distance(geom, '010100...'::geometry) < 50000)
```
Je n'ai pas fait de VACUUM depuis 1 mois...
Le cloud c'est l'ordi de quelqu'un d'autre
Re: Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
Ah ! C'est ça ton problème. st_distance() ne peut pas utiliser l'index. Remplace par ST_DWithin(geom, point, 50000) et tu verras l'index s'utiliser. Et fais un VACUUM ANALYZE d'urgence !
-
sandra1960
- Messages : 34
- Inscription : mar. mars 10, 2026 7:25 pm
Re: Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
Merci ! Avec ST_DWithin c'est passé de 12s à 80ms. Je me sens bête... Pourquoi cette différence ?
Le cloud c'est l'ordi de quelqu'un d'autre
Re: Problème de performances avec PostgreSQL 14 sur des requêtes géospatiales
ST_DWithin utilise directement la bbox pour filtrer en premier. st_distance calcule la distance exacte pour TOUS les points avant de filtrer. Classique 