7

基本的に、各行に緯度/経度の値が含まれる巨大なテーブル (1 億レコード) があるアプリがあります。

私は常にこのテーブルにクエリを実行して、特定の点を中心とした半径内に収まるすべてのレコードを取得しています。たとえば、「39.89288、-104.919434 から 5 マイル以内のすべてのレコード」

このために、緯度/経度の列にインデックスを作成し、ポイントの「バウンディング スクエア」を取得してから、ASP.Net アプリで円の外側にあるすべてのポイントを破棄しています。 SQL Server で円の計算を行うよりも。
注: これはすべて米国に関するデータであるため、私の計算では地球が平らであると考えています。これは私のニーズに対して十分に正確です。

さて、Lat/Long インデックスの主な問題は、ポイントの「正方形」であることです。「x と y の間の Lat」と「x と y の間の Long」を見つけようとしているので、実際にはできません。ポイントの「ライン」を検索する場合と同様に、インデックスを非常に効率的に使用します。

SQL 2008 の空間機能について調べてみましたが、これが役立つかどうかを判断するのに十分な具体的な情報が見つかりませんでした。

問題は、SQL 2008 には、この特定のタイプのクエリを SQL 2005 よりもはるかに高速にする、何らかの異なるタイプのインデックスがあるかどうかです。

4

4 に答える 4

5

はい!空間インデックスに関するこの記事を確認してください。これらのタイプのインデックスは、「インデックス付きの四角形」アプローチよりもうまく機能することがわかります。さらに、「別のポイントの近くにあるポイント」を効果的に照会できるだけでなく、他のすべての種類の地理操作を実行できます。この型で使用できるすべてのメソッドの完全なリストを次に示します。

于 2009-08-28T12:48:21.533 に答える
1

はい、これは SQL 2008 空間データで非常にうまく実行できます。適切なメッシュ レベルで空間インデックスを設定するには、ある程度の専門知識/試行錯誤 (?) がありますが、その後は素晴らしいと思われます (友人から伝えられましたが、私自身は実稼働環境で使用したことはありません)。

目的 (緯度/経度) のために、geo metricではなくgeoグラフィックタイプを使用します。私は、空間インデックスが「入れ子になったバウンディング トライアングル」タイプのインデックス作成をセットアップすることを信じています。これは、「バウンディング ボックス」タイプの事前条件付けよりも改善されています。

OK、 Grant Fritchey の "Home of the Scary DBA" ブログのこの投稿から始めることをお勧めします (質問したい場合は、私があなたに送ったことを彼に伝えてください :-) )。これは、彼が学び始めたばかりの空間インデックスのパフォーマンス分析と調整の良い説明であり、他の多くの資料へのリンクも含まれています。

于 2009-08-28T12:37:57.703 に答える
0

ご存知のように、私は約 5 年前にスターバックスで緯度/経度のクエリを行っていました...

基本的に、私たちは店舗を配送センターに関連付けたいと考えていました..私は彼らのオペレーション部門で働いていましたが、正直なところ、特定の倉庫からどの店舗が供給されているのかわかりませんでした.

そこで、この「魔法陣」アルゴリズムを思いつきました。

基本的に、彼らは次のような一連のクエリを持っていました: select * from table1, table2 Where UdfDistance(table1.Lat, table1.Long, table2.Lat, table2.Long) >= 250

私は本当に似たようなものを思いついたが、それはずっと速く走った

select * from table1, table2 Where UdfDistance(table1.Lat, table1.Long, table2.Lat, table2.Long) >= 250 and table1.Lat between (table2.Lat - 1) and (table2.Lat + 1) and table1 (table2.Long - 1) と (table2.Long + 1) の間の .Long

基本的に、2 つの地理的ポイントに 1 度以上 (緯度と経度) の差がある場合は、2 つの地理的ポイントを比較しようとしないでください。

つまり、NORMAL RELATIONAL INDEXES を使用して多くの値を除外したため、UDF 距離計算で処理する情報が大幅に少なくなりました。

お役に立てば幸いです。必要があるかどうかを明確にするお手伝いをします

于 2011-03-17T01:08:41.693 に答える