[SQL SERVER][Performance]重視 Null 值 (2)

[SQL SERVER][Performance]重視 Null 值 (2)

上一篇我談到 Null 一些注意事項,大概有以下2點。

1.資料表中明確使用 Not Null 並指定 Default Values

2.資料表中儘可能不允許 Null 值。

 

這篇我們來看看資料庫相關Null選項。

image

 

ANSI NULL 預設值:(請明確使用關鍵字,並不依賴資料庫選項)

覆寫新資料行的預設 Null 屬性

image

(擷取部份)

 

參考: SET ANSI_NULL_DFLT_ON (Transact-SQL)SET ANSI_NULL_DFLT_OFF (Transact-SQL)

 

ANSI NULLS 已啟用:(建議 True)

指定搭配 Null 值一起使用時,等於 (=) 和不等於 (<>) 比較運算子的 ISO 標準行為。

image

(擷取部份)

 

返回0筆資料

set ansi_nulls on
select * from testnull
where c1 = NULL 

 

 

image

 

返回所有 Null 資料

set ansi_nulls off
select * from testnull
where c1 = NULL 

image

 

參考:SET ANSI_NULLS (Transact-SQL)

 

ANSI 填補已啟用:(建議 True)

控制資料行如何儲存比資料行的定義大小還短的值,

以及如何儲存 char、varchar、binary 和 varbinary 資料含有尾端空格的值。

 

image

(擷取部份)

 

參考:SET ANSI_PADDING (Transact-SQL)

 

ANSI 警告已啟用:(依需求設定,並不依賴資料庫選項)

指定數個錯誤狀況的 ISO 標準行為。

image

(擷取部份)

參考:SET ANSI_WARNINGS (Transact-SQL)

 

串連 Null 產生 Null:(建議 True)

控制是否將串連結果當作 Null 或空字串值來處理。

image

image

(擷取部份)

 

SET CONCAT_NULL_YIELDS_NULL on
select 'rico'+null

image

 

SET CONCAT_NULL_YIELDS_NULL off
select 'rico'+null

image 

 

參考:SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)