5

ずっと前に、アプリケーション層でデータをソートしORDER BY、SQL で句を使用しないようにアドバイスされました。その理由は、.Net が SQL エンジンをより効率的にソートするからです。

このアドバイスと矛盾するのは、可能な場合は SQL でデータを並べ替え、Sort 変換を回避することを推奨している SSIS ベスト プラクティスです。

SSISのアドバイスは私には理にかなっています。だから今、私はそれを避けるという最初のアドバイスORDER BYが偽物であるかどうか疑問に思っています.

複雑すぎないクエリの場合、ORDER BY は必ずしもパフォーマンス ヒットを意味するのでしょうか?

ありがとう。

4

2 に答える 2

7

ORDER BY を回避するための Brent Ozar の主張は、SQL Server ライセンスが高価であり、アプリケーション サーバー ライセンスが安価であることに要約されます。SSIS の場合の「アプリケーション サーバー」は、実際には SQL Server であるため、「より安価なサーバー」という議論は当てはまりません。

.NET の並べ替えが SQL Server の並べ替えよりも本質的に高速であるという議論は見たことがありませんが、それが一般的に正しいとしたら、非常に驚​​かれることでしょう (特に、SQL で利用可能な基になるデータに関するメタ情報の量を考えると)。サーバー クエリ オプティマイザーですが、一般的な .NET Sort() メソッドでは使用できません)。並べ替えを開始する前にすべてのデータを SSIS によってキャッシュする必要があるため、SSIS 並べ替え変換がデータ フローのパフォーマンスに大きな打撃を与える可能性があることはわかっています。

したがって、T-SQL ORDER BY 句を使用してデータを並べ替えるか、SSIS Sort 変換を使用するかを選択するという特定のケースでは、最初は常に ORDER BY 句を選択します。

于 2013-08-11T18:53:42.573 に答える