La creazione di un buffer per trovare i punti è un no-no definitivo a causa di (1) il sovraccarico della creazione della geometria che rappresenta il buffer e (2) il calcolo point-in-polygon è molto meno efficiente di un semplice calcolo della distanza.
Ovviamente stai lavorando con dati (longitudine, latitudine), quindi dovresti convertirli in un sistema di coordinate cartesiane appropriato che abbia la stessa unità di misura della tua distanza di 10.000. Se quella distanza è in metri, puoi anche trasmettere il punto dalla tabella a geography
e calcola direttamente sulle coordinate (long, lat). Dato che vuoi identificare solo i punti che si trovano entro la distanza specificata, puoi usare ST_DWithin()
funzione
con calcolo sulla sfera per velocità aggiunta (non farlo a latitudini molto elevate o con distanze molto lunghe):
SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);