1

2000 レコードを持つ「Region」というテーブルが 1 つあります。リージョン テーブルには、ポイントと呼ばれるジオメトリ列が 1 つあります。これで、1,000 万レコードを含む「geometry」というジオメトリ列を持つ Bus_Route という別のテーブルができました。今、私はその地域にある点が欲しいです。STcontains を使用して、ポイントがその地域にあるかどうかを確認するために、次のクエリを使用しています。しかし、このクエリには時間がかかります (約 3 日)。1,000 万件のレコードを持つ Bus_Route テーブルに Spatial インデックスを作成しましたが、これも役に立ちませんでした。

         Select
              Region.BlockID,
              Bus_Route.geometry
              from 
              Bus_Route,                         
              Region
           where 

              Region.points.STContains(Bus_Route.geometry) = 1

助けてください!

4

1 に答える 1

2

いくつかの観察:

  1. バスはおそらくフラットランドを通らないため、ジオメトリではなくジオグラフィを使用します。
  2. クロス結合を行う場合 (前述のクエリが実行している場合)、次のようにして明示します。


    Bus_RouteクロスジョインリージョンからRegion.BlockID、Bus_Route.geometryを選択

  3. STContains の代わりに STIntersects を使用することを検討しましたか? 私が問題を正しく解釈している場合、特定のルートが通過する地域を探していることになります。つまり、2 つの geo インスタンス間の交差点は空ではありません。作成したクエリは、リージョン内に完全に囲まれたルートを表示します。

于 2012-11-12T13:45:17.327 に答える