[SQL]欄位型態為VARCHAR,查詢條件值有多加上N還是會有些一影響的哦!

在有些資料表的欄位會使用 Char 或是 Varchar。

在查詢時,如果查詢條件值有多加上N還是會有些一影響的哦! 

以下是同事 Jerry 的測試分享,

如果在資料庫定序為 Chinese_Taiwan_Stroke_CS_AS ,有加上 N 的話,以我們的SQL來看,運算子成本為 9.19 ,如下,

如果在資料庫定序為 Chinese_Taiwan_Stroke_BIN ,有加上 N 的話,以我們的SQL來看,運算子成本為 0.0032 ,如下,

以上2個查詢,因為資料庫欄位為 varchar, 而我們的查詢值有加上 N ,所以 SQL 都需要幫我們做 隱含轉換 ,所以最前面有 警告的符號。

所以如果沒有加上 N 的話,運算子成本為 0.0032 ,而且SQL不用做 隱含轉換 ,如下,

結論

要不要加上 N ,要取決於欄位資料型態。 可以的話,請儘量符合對應的型態。

資料庫的定序也會有一些影響。

以我們的資料量來看,在定序為 Chinese_Taiwan_Stroke_CS_AS , 查詢時間約為 0.8 秒。

沒加上 N ,或是定序為 Chinese_Taiwan_Stroke_BIN ,查詢時間約為 0.01 秒。

 

最後,感謝同事 Jerry 的分享。

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^