2017-09-05 24 views
-2

大規模なデータセットをSQLでクエリしたいのですが、これは正しいアプローチですか?SQL:大規模なテーブルのクエリ

declare @datetime Datetime 

select * 
from sales 
where salesdate <= @datetme 

か:

select * 
from sales 
where salesdate < (select GetDate()) 

か:

select * 
from sales 
where salesdate < GetDate() 

またはNOW()

+2

SQL Serverを使用していると仮定します。これらのクエリに違いがある場合、私は非常に**驚いています**。 –

+0

パフォーマンスに関する質問はありません –

+4

はい。そして、パフォーマンスは変わらないと思います。 –

答えて

1

Select * from sales where salesdate < GetDate()を使用して、それを行うための最も論理的な方法を思われる、Select * from sales where salesdate < (Select GetDate())よりもその少ないSQLと最初のオプションのような変数を宣言することにはあまり意味がありませんクエリを1つだけ実行している場合は、これを多く使用する場合やストアドプロシージャで使用する場合は、変数を追加すると意味があります。

しかし、実行計画を見て、最高の

6

を実行する参照のすべての3つは、クエリなしで変数の0%ASSIGN段階以外の同じ実行計画を持っています。しかし、常に変数をDATETIMEとして初期化してから比較するのは、長期的には良い方法になるでしょう。このように長い比較がある場合、ユーザーは変数でdatetimeをフォーマットし、列をそれらの変数と比較するという習慣を得るでしょう。さもなければ、それはSQL列をフォーマットして、それを日付と組み合わせるという習慣になります。これは、値との比較のためにすべてのデータ行のdatetimeフィールドをフォーマットし、日時比較を遅くします。

この特定のクエリでは、読みやすく、使いやすくするために、クエリ番号を選択できます。 3 [select * from sales where salesdate < GetDate()]。

関連する問題