PostGis Abfrage der nächsten Nachbarn

8

Ich möchte alle Punkte innerhalb eines bestimmten Bereichs einer anderen Menge von Punkten abrufen. Nehmen wir an, alle Geschäfte im Umkreis von 500m von jeder U-Bahn-Station finden.

Ich habe diese Abfrage geschrieben, die ziemlich langsam ist und möchte sie optimieren:

%Vor%

Ich verwende die neuesten Versionen von Postgres und PostGis (Postgres 9.5, PostGis 2.2.1)

Hier sind die Metadaten der Tabelle:

%Vor%

Hier ist das Ergebnis von EXPLAIN (ANALYSE, BUFFERS):

%Vor%     
Chris 14.01.2016, 09:52
quelle

3 Antworten

0

Ich kam schließlich zu der Schlussfolgerung, dass ich nicht leben konnte: Berechnen Sie die Entfernung zwischen Tausenden von Punkten von Interesse und Tausenden von Orten innerhalb einer realistischen Zeitspanne (& lt; 1 sec).

Ich berechne also alles vor: Jedes Mal, wenn ein Ort oder ein POI erstellt / aktualisiert wird, speichere ich den Mindestabstand zwischen jedem Ort und jeder Art von POI, um die Frage "Welche Orte sind näher als X?" beantworten zu können Meter von dieser Art von POI ".

Hier ist das Modul, das ich für diesen Zweck programmiert habe (es ist in Elixir, aber der Hauptteil ist Raw SQL)

%Vor%     
Chris 01.02.2016, 10:10
quelle
0

Ich denke, dass Sie wegen des vierten Parameters die geographische Version von st_dwithin verwenden.

Versuchen Sie, Ihre Abfrage zu dieser zu ändern:

%Vor%

Wenn es nicht gelöst wird, bitte poste die EXPLAIN-Analyse erneut.

    
fradal83 15.01.2016 10:19
quelle
-1

Ich denke, Sie sollten eine Lösung ändern, Postgis führt immer noch eine Abfrage in der Strukturierten Datenbank, es ist mächtig, aber nicht schnell in speziellen Anforderungen, möglicherweise brauchen Sie elasticsearch.

elasticsearch ist gut in der Geoortsuche, aber nicht gut im Geodatenprozess, ich denke, Sie brauchen beide.

Ссылка

    
JackFreeman 14.01.2016 17:17
quelle