PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fügen Sie Indizes hinzu, um die Geocoder-Nahsuche zu beschleunigen

Die Verlangsamung wird wahrscheinlich durch mathematische Operationen und nicht durch das Abrufen von Tabellendaten verursacht. Ein Teil Ihrer Kriterien bezieht sich nicht auf Datensatzfelder, sondern auf das Ergebnis der mathematischen Operation für andere Datensätze, sodass daraus ein O(N) wird.

Der Grund, warum Postgres keinen Index verwendet und stattdessen den Seq-Scan wählt, liegt darin, dass es entscheidet, dass die meisten Tabellendatensätze während der Abfrage abgerufen werden müssen. Wenn die meisten Datensätze in der Tabelle abgerufen werden müssen, bringen Indizes möglicherweise keinen großen Nutzen, wenn überhaupt.

Um die Dinge zu beschleunigen, sollten Sie in Betracht ziehen, räumliche Indizes und die umgebungsbasierte Suche von PostGis zu verwenden oder alternativ Elasticsearch mit Geoentfernungsabfrage .