基本的に、各行に緯度/経度の値が含まれる巨大なテーブル (1 億レコード) があるアプリがあります。
私は常にこのテーブルにクエリを実行して、特定の点を中心とした半径内に収まるすべてのレコードを取得しています。たとえば、「39.89288、-104.919434 から 5 マイル以内のすべてのレコード」
このために、緯度/経度の列にインデックスを作成し、ポイントの「バウンディング スクエア」を取得してから、ASP.Net アプリで円の外側にあるすべてのポイントを破棄しています。 SQL Server で円の計算を行うよりも。
注: これはすべて米国に関するデータであるため、私の計算では地球が平らであると考えています。これは私のニーズに対して十分に正確です。
さて、Lat/Long インデックスの主な問題は、ポイントの「正方形」であることです。「x と y の間の Lat」と「x と y の間の Long」を見つけようとしているので、実際にはできません。ポイントの「ライン」を検索する場合と同様に、インデックスを非常に効率的に使用します。
SQL 2008 の空間機能について調べてみましたが、これが役立つかどうかを判断するのに十分な具体的な情報が見つかりませんでした。
問題は、SQL 2008 には、この特定のタイプのクエリを SQL 2005 よりもはるかに高速にする、何らかの異なるタイプのインデックスがあるかどうかです。