Att skapa en buffert för att hitta punkterna är ett bestämt nej-nej på grund av (1) overheaden för att skapa geometrin som representerar bufferten och (2) punkt-i-polygon-beräkningen är mycket mindre effektiv än en enkel avståndsberäkning.
Du arbetar uppenbarligen med (longitud, latitud) data så du bör konvertera det till ett lämpligt kartesiskt koordinatsystem som har samma måttenhet som ditt avstånd på 10 000. Om det avståndet är i meter kan du också kasta punkten från tabellen till geography
och beräkna direkt på (lång, lat) koordinaterna. Eftersom du bara vill identifiera de punkter som ligger inom det angivna avståndet kan du använda ST_DWithin()
funktion
med beräkning av sfären för ökad hastighet (gör inte detta när du är på mycket höga breddgrader eller med mycket långa avstånd):
SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);