ロードジャンクションである近くの地理的ノードをSQL CEで効率的に検索するにはどうすればよいですか?

私は次のクエリを持っています:

var nodes = DB.Nodes
              .Where(x =>    x.Lon > 486400
                          && x.Lon < 486600
                          && x.Lat > 5025100
                          && x.Lat < 5025300)
              .Join(DB.RoadNodes, x => x.Id, y => y.NodeId, (x, y) => x);

これは特定の場所の近くにある DB.Nodes のすべてのノードを検索し、 DB.RoadNodes で結合を取ってノードが道路ジャンクションかどうかをチェックします。しかし、これには数秒かかりますが遅いです。

私はここで2つのことをしなければならないように見えます:

  1. Optimize the Where part which takes ~5 seconds on its own, I heard something about Spatial?

  2. Optimize the Join part which takes a remaining ~15 seconds on its own, I need an index, right?

だから私はこれについて2つの質問があります:

  1. How can I do spatial storage and searching in SQL Server Compact Edition?

    If this is unsupported, how do I work around this issue?

  2. Which columns do I need to index for this query to work sufficiently?

    It seems like indexing the NodeId of RoadNodes doesn't really improve the query.

これをWindows Phone 7で実行する予定であるため、SQL CEに制限されていますのでご注意ください。

また、クエリを少し長くする Unique()を取る必要があるノードもありますが、クエリ自体が高速で実行されていると問題ではないはずです。彼が参加したのは二重の結果を紹介することだけです。あるいは、私は他の方法で結合を行うべきですか?

2

答えはありません

0