資料庫建表時,對於一些可填可不填的欄位,我們應該儘量把它設置為 NOT NULL。這種做法即可以提高性能,又可以在很大程度上避免空指針類的問題,好處頗多。 1.節省空間 NULL 列需要更多的存儲空間:需要一個額外位元組作為判斷是否為 NULL 的標誌位。 2.空指針 查詢時,可以在一定程度上減少 N ...
資料庫建表時,對於一些可填可不填的欄位,我們應該儘量把它設置為 NOT NULL。這種做法即可以提高性能,又可以在很大程度上避免空指針類的問題,好處頗多。
1.節省空間
NULL 列需要更多的存儲空間:需要一個額外位元組作為判斷是否為 NULL 的標誌位。
2.空指針
查詢時,可以在一定程度上減少 NullPointerException。
3.減少因為空值而出現的計算錯誤
如果有 Null column 存在的情況下,count(NULL column) 需要格外註意,NULL 值不會參與統計。
4.索引
含有空值的列很難進行查詢優化,而且對錶索引時不會存儲 NULL 值的。所以如果索引的欄位可以為 NULL值,索引的效率會下降。因為它們使得索引、索引的統計信息以及比較運算更加複雜。
應該用0、一個特殊的值或者一個空串代替 NULL值。
5.使用 != ,NOT IN 的情況
NOT IN 、!= 等負向條件查詢在有 NULL 值的情況下,返回永遠為空結果,查詢容易出錯。
以上僅是本人最近學習所做的總結和思考,有不對的地方歡迎指正。