色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Mysql的字段設置為null有什么優點呢

夏志豪2年前21瀏覽0評論
Mysql的字段設置為null有什么優點呢?

1. 問題描述

Mysql的字段設置為null有什么優點呢?

問題結論

網上隨便找了找,沒有發現什么優點,缺點倒是一大堆。在實踐過程中,默認為null最大的優點應該算是方便吧,一些非核心字段默認為空,前端用的時候判斷為null時不展示,或者為null時將其設置為默認的字段值。

2. 簡述Mysql的字段設置為null的缺點

2.1 查詢條件中有null列需要格外注意,容易出錯。

mysql中,任何值和null的比較,都返回null,而不是true或者false。

包括null=null結果都是null,不是true。

所以一旦在查詢條件使用了null,而不是使用is null或者is not null將出現錯誤。不會返回任何值。由于mysql中,null值和任何值的比較,都會返回null,導致條件中有null的時候,返回結果和想想中的可能就不一樣了。

2.2 部分函數入參有null的時候,返回值是null。

contact()方法,如果入參有null,返回是null。

2.3 Null列需要更多的存儲空間:需要一個額外字節作為判斷是否為NULL的標志位。

table1和table3是一模一樣的,唯一不同的就是user_name字段,table1是not null,而table3的user_name沒有not null的約束。

2.4 Explain輸出的key_len的計算規則和三個因素有關:數據類型、字符編碼、是否為 NULL。

Utf8mb4編碼是4字節,utf8是3字節

not null的字段

key_len=索引字段占用的字節數+2字節可變長字段長度(定長類型不需要)

如編碼集=utf8mb6的varchar(20),ken_len=82

62=20*4 +2

允許為null字段key_len=索引字段占用的字節數+2字節可變長字段長度(定長類型不需要)+1(存儲是否為null的標識)

如編碼集=utf8mb6的varchar(20),ken_len=83

83=20*4+2+1

所以說索引字段最好不要為NULL,因為NULL會使索引、索引統計和值更加復雜,并且需要額外一個字節的存儲空間。

作者:夕陽雨晴,歡迎關注我的頭條號:偶爾美文,主流Java,為你講述不一樣的碼農生活。