2011年9月下旬以降、PostGISは、ORDER BY句で使用可能な特別な演算子を介してインデックス付きの最近傍クエリをサポートしています:
SELECT name, gid
FROM geonames
ORDER BY geom <-> st_setsrid(st_makepoint(-90,40),4326)
LIMIT 10;
... geom
を持つ10個のオブジェクトを返します 最も近い-90,40
スケーラブルな方法で。いくつかの詳細(オプションと警告)はその発表の投稿にあり、<->と<#>演算子の使用も公式のPostGIS2.0リファレンスに文書化されています。 (2つの主な違いは、<->
形状図心と<#>
を比較します それらの境界を比較します—ポイントに違いはありません。他の形状は、クエリに適したものを選択します。)