はい、地理空間機能を使用できますが、かなり複雑です。緯度と経度(および経度と緯度も!)に基づいてエントリにインデックスを付ける方がはるかに簡単です。データのクエリについては、実際に10 km以内にあるレコードをクエリするのではなく、現在の場所(インデックスを使用できる)を中心とする20kmX20kmの境界ボックスに一致する行を検索するクエリを実行することをお勧めします。クエリの半径eksewhereの外側にあるものを破棄します。例:
SELECT * FROM (
SELECT p.id, p.description,
SQRT((x.current_latitiude-p.latitude)*(x.current_latitiude-p.latitude)
+ (x.current_longitude-p.longitude)*(x.current_longitude-p.longitude))
AS distance
FROM places p
WHERE p.latitude BETWEEN (x.current_latitiude - x.max_range)
AND (x.current_latitiude + x.max_range)
AND p.longitude BETWEEN (x.current_longitiude - x.max_range)
AND (x.current_longitiude - x.max_range)
) ilv
WHERE ilv.distance<x.max_range
(10kmを経度/緯度に使用している単位に変換し、x.max_rangeの値に置き換える必要があります)。