在有些資料表的欄位會使用 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:從零開始的軟體開發生活」
請大家繼續支持 ^_^