1

下部にOrderBy句がない00:00:00秒の実行時間を報告する左結合SQLクエリ(2012)があります。「OrderBy」を追加すると、クエリに00:00:24秒かかります。

これは正常ですか?

ここでかなり基本的な概念が欠落していることは明らかですが、クエリが実行されてから結果がソートされると想定していました。どうやらそうではないようですが、誰かが私を正しい方向に向けることができますか?

その他の情報:私が結合している2つのテーブルには、それぞれ約35,000行と22,000行があります。日付範囲を選択していますが、2つの文字列で左結合が発生しています。結果セットは300〜400の結果です。文字列を比較すると大きなペナルティがあることを私は知っています、そしてそれはここでの問題の一部だと思います。

SQLは次のとおりです。

DECLARE @mystartdate as datetime
SET @mystartdate = CAST(CAST((GETDATE() - 0) AS date) as nvarchar) + ' 06:00:00'

DECLARE @myenddate as datetime
SET @myenddate = CAST(CAST((GETDATE() + 1) AS date) as nvarchar) + ' 05:59:59'

SELECT SUBSTRING(CAST([Event_Time] AS nvarchar),0,9) AS mytime
,[CombinedDateTime]
,[MediaFileName]
,[Duration]
,[High_Definition]

FROM [dbo.schedules]

LEFT JOIN dbo.subtitles
ON REPLACE(SUBSTRING(dbo.subtitles.sub_filename, 1, LEN(dbo.subtitles.sub_filename) -4), '-', '') = REPLACE(dbo.schedules.MediaFileName,'/','')

WHERE [CombinedDateTime] >= @mystartdate AND [CombinedDateTime] <= @myenddate

Order by CombinedDateTime

ありがとう

4

2 に答える 2

2

ORDER BY列/行に関する結果の順序。注文するすべての列にインデックスを設定して、もう一度試してみてください。これが役立つはずです。

于 2013-03-13T19:36:51.863 に答える
1

それは正常です。SQL および ORDER BY アルゴリズムを使用すると、多数のレコードでパフォーマンス ヒットが発生しますが、すべてプロセッサやその他の環境要因に依存します。できることは、2 つのテーブルをビューに設定することです。パフォーマンスが向上した場合は、データを事前定義されたビューにコンパイルするかどうかを確認してください。

また、データをプルする頻度やリアルタイムで必要な場合などに応じて、Data Transform を使用してプログラムでデータをスクリプト上の独自のテーブルに結合することもできます。

ただし、調査するにはいくつかのオプションがあります...

于 2013-03-13T19:35:39.737 に答える