0

私のSQL-Server 2008 R2には、SQLクエリがあります:

SELECT
IceCrossing.WaterwayName as WaterWayName,
IceCrossing.Segment_ID as Segment_ID,
the_geom = Track.Track
FROM dbo.IceCrossing
LEFT JOIN Track ON IceCrossing.Segment_ID=Track.Segment_ID

そこで、IceCrossing からすべての行を選択したいのですが、Track に同じ Segment_ID を持つ行が存在する場合は、結果に表示されます。そして、JOINに問題があります。そのクエリは4〜5秒で機能し、260行が返されます。私はそれを変更しようとしました:

SELECT
IceCrossing.WaterwayName as WaterWayName,
IceCrossing.Segment_ID as Segment_ID,
the_geom = Track.Track
FROM dbo.Track
RIGHT JOIN IceCrossing ON Track.Segment_ID=IceCrossing.Segment_ID

でも同時。
データベースとテーブル構造を何もせずに高速化することは可能ですか?

アップデート

より詳しい情報。
トラック - 209 行。
アイスクロッシング - 259 行。Segment_ID type - [uniqueidentifier]
このインデックスについて知るには?

更新2

現場での問題をどのように理解するかthe_geom。クエリ:

    SELECT
IceCrossing.WaterwayName as WaterWayName,
IceCrossing.Segment_ID as Segment_ID,
FROM dbo.IceCrossing
LEFT JOIN Track ON IceCrossing.Segment_ID=Track.Segment_ID

1 秒以内に動作します。
the_geom タイプ - 非常に長い文字列のようなジオメトリです。
この場合、どうすればよいですか?

4

2 に答える 2

1

簡単select * from Trackに試してみましたselect * from IceCrossingか?列の 1 つに大量のデータがある場合 (varbinary(max) など)、クエリが遅いのではなく、クライアント側ですべてのデータを受信して​​いる可能性があります。

そのクエリを試してください

select
    I.Segment_ID,
    T.Segment_ID
from dbo.IceCrossing as I
    left outer join Track as T on T.Segment_ID = I.Segment_ID

どのくらいの期間実行されますか?

于 2013-07-28T16:43:46.640 に答える