6
リテラル値のみを使用するWHERE句でISNULL()を置き換える別の方法は何ですか?
これが何でないか: これは、ユーザー入力を受け入れるか、変数を使用するキャッチオールクエリに関する質問ではありません。 これは、厳密に述語と比較するために値をカナリア値に置き換える句でISNULL()使用されるクエリと、それらのクエリをSQL Server でSARGableに書き換えるさまざまな方法に関するものです。WHERENULL 向こうに席がありませんか? このクエリ例は、SQL Server 2016のStack Overflowデータベースのローカルコピーに対するもので、NULL年齢または18歳未満のユーザーを探します。 SELECT COUNT(*) FROM dbo.Users AS u WHERE ISNULL(u.Age, 17) < 18; クエリプランは、非常に思慮深い非クラスター化インデックスのスキャンを示しています。 スキャン演算子は、SQL Serverの最新バージョンの実際の実行計画XMLへの追加のおかげで、すべてのスティンキン行を読み取ったことを示します。 全体として、9157の読み取りを行い、約0.5秒のCPU時間を使用します。 Table 'Users'. Scan count 1, logical reads 9157, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads …
55
sql-server