ESRIベースのプロセスからSQL Serverに単純なジオプロセシングルーチンを移動しようとしています。私の仮定は、それがはるかに効率的であるということです。私の最初のテストでは、重複する線形データを関連付けるために交差ルーチンに取り組んでいます。
私のWCASINGテーブルには1610レコードがあります。これらのケーシングを関連するメインに関連付けようとしています。約277,000のメインがあります。最大1,600のケーシングがあります。
以下のクエリを実行して、個々の一致を見つけるのにかかる時間の一般的な意味を取得します。このクエリは、40秒で5つの有効な交差を返しました。
SELECT Top 5 [WCASING].[OBJECTID] As CasingOBJECTID,
[WPUMPPRESSUREMAIN].[OBJECTID] AS MainObjectID, [WCASING].[Shape]
FROM [dbo].[WPUMPPRESSUREMAIN]
JOIN [WCASING]
ON [WCASING].[Shape].STIntersects([WPUMPPRESSUREMAIN].[Shape]) = 1
私の主な質問;
検索順序によっては、この処理が速くなりますか?
- 「B」の内部で「A」を見つけると、
- 「A」の内部で「B」を見つける
- これらのデータセットからの5つのレコードの最初のリターンは問題ではないということです
最初にバッファリングして小さなメインセットに制限してから検索すると、この処理は速くなりますか?
SQL Server Tuningを使用して、ジオメトリベースのクエリを操作できますか?
SELECT WCASING.OBJECTID AS CasingOBJECTID,
WPUMPPRESSUREMAIN.OBJECTID AS MainObjectID, WCASING.UFID AS UFID,
WPUMPPRESSUREMAIN_IPS.UFID AS MainUFID, WCASING.SHAPE
INTO WCASING_INTDefsV6
FROM WCASING with (index([FDO_ShapeWC]))
INNER JOIN [WPUMPPRESSUREMAIN_IPS] ON
[WPUMPPRESSUREMAIN_IPS].Shape.STIntersects(WCASING.SHAPE) = 1
この新しいクエリの定義が改善されました。
- 現在、両方のテーブルに空間インデックスがあります
- 以前は、Casing Table(Smaller)には空間インデックスがありませんでした
- 非クラスタ化インデックスが含まれていました
クエリにはwithインデックスステートメントもあります。
新しいクエリには37分かかりました。古いクエリは44分かかりました。
私はより良い結果を望んでおり、テストを続けます。