2010-04-26 4 views
2

J'ai 5 tables:recherche rapide des utilisateurs à proximité en utilisant PostGIS

- users - information about user with current location_id (fk to geo_location_data) 
- geo_location_data - information about location, with PostGIS geography(POINT, 4326) column 
- user_friends - relationships between users. 

Je veux trouver près des amis pour l'utilisateur en cours, mais il faut beaucoup de temps d'exécution requête de sélection pour savoir si l'utilisateur est un ami et ensuite, exécutez la sélection en utilisant ST_DWithin. Peut-être quelque chose ne va pas dans le modèle de domaine ou dans les requêtes?

+1

Pourriez-vous s'il vous plait signaler la requête que vous utilisez maintenant? – Quassnoi

Répondre

1

La première étape consiste à indexer la colonne de géométrie. Quelque chose comme ceci:

CREATE INDEX geo_location_data_the_geom_idx ON geo_location_data USING GIST (the_geom); 
0

Essayez d'utiliser un tampon sur vos points et l'opérateur intersects.

SELECT ... FROM A, B WHERE Intersects(B.the_geom, ST_Buffer(A,1000)) 

Cela devrait être plus rapide.

Questions connexes