多くの左外部ジョインがある複雑なクエリがあります。Microsoft SQL Serverクエリは、select distinct vs select countに基づいて最適化されていません。
私はフィルタを備えたカップルのテーブルとそのクエリ
select distinct top X [table1].[column1]
from ....
を取る、とに比べて大幅に異なるクエリプランを見てみると:
select count(distinct [table1].column1)
from ....
私が気づくことは、すべて左が参加していますwhere文節またはselect文節のフィルターに必要でない私のステートメントの中で、select distinct文のためにオプティマイザによって削除されますがselect count文のためにはありません。
私はMicrosoft SQL Server 2014をエンジンとして使用しています。
私はselect distinctがジョインをどのように削除しているのだろうと思っています。これはselect countを提供できるクエリヒントです。
明確な理由からselect distinctがselect countよりも優れています。select countも同様に機能します。あなたはleft join
のが、無where
句を持っている場合は
おかげ
SQLクエリを追加 –
実行プランを入手してhttp://pastetheplan.comに投稿し、ここにリンクを投稿してください。 – alroc