Criar um buffer para encontrar os pontos é definitivamente impossível por causa de (1) a sobrecarga de criar a geometria que representa o buffer e (2) o cálculo do ponto no polígono é muito menos eficiente do que um simples cálculo de distância.
Você obviamente está trabalhando com dados (longitude, latitude), então você deve convertê-los em um sistema de coordenadas cartesianas apropriado que tenha a mesma unidade de medida que sua distância de 10.000. Se essa distância estiver em metros, você também poderá lançar o ponto da tabela para
geography
e calcule diretamente nas coordenadas (longa, lat). Como você deseja apenas identificar os pontos que estão dentro da distância especificada, você pode usar o ST_DWithin()
função
com cálculo na esfera para aumentar a velocidade (não faça isso quando estiver em latitudes muito altas ou com distâncias muito longas):SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);