私は私が何かを正しく理解していることを確認する必要があります:
私は最近、ユーザーがLinqに次のような回答を投稿したSO質問を表示しました。
from p in db.table where p.column.AddMinutes(1) > DateTime.Now select p
Linqに不慣れな方には、そのステートメントの出力(公平にテストされていません)は次のようになると思います。
SELECT *
FROM table t
WHERE DATEADD(min, 1, t.column) >= GETDATE()
私はこれに対する返信を投稿し、日時操作は変数(この場合はGETDATE()
)に対して行う必要があるため、実際にはステートメントは次のようなものを反映する必要があります。
SELECT *
FROM table t
WHERE t.column >= DATEADD(min, -1, GETDATE())
私の返答で、私が今確信していないビットは、次のように仮定します:
- 列の操作のため、インデックスは使用されません
- 上記の理由により、クエリプランは一部異なります(テストされていないため、テストされています)。
- 上記のため、最初のクエリは実際には2番目のクエリよりもパフォーマンスが低下します。
私の質問:
私の推論で何かを逃したことがありますか?私は正しいですか?最後に、SARGabilityに関する優れた記事がある団体はありますか?