Das Erstellen eines Puffers zum Auffinden der Punkte ist definitiv ein Tabu, weil (1) der Aufwand für die Erstellung der Geometrie, die den Puffer darstellt, und (2) die Punkt-in-Polygon-Berechnung viel weniger effizient ist als eine einfache Entfernungsberechnung.
Sie arbeiten offensichtlich mit Daten (Längengrad, Breitengrad), also sollten Sie diese in ein geeignetes kartesisches Koordinatensystem umwandeln, das dieselbe Maßeinheit wie Ihre Entfernung von 10.000 hat. Wenn diese Entfernung in Metern angegeben ist, können Sie den Punkt aus der Tabelle auch in geography
umwandeln und berechnen Sie direkt auf den (long, lat) Koordinaten. Da Sie nur die Punkte identifizieren möchten, die sich innerhalb der angegebenen Entfernung befinden, könnten Sie den ST_DWithin()
Funktion
mit Berechnung auf der Kugel für zusätzliche Geschwindigkeit (nicht in sehr hohen Breiten oder bei sehr großen Entfernungen):
SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);