爲什麼MySQL字段要設置爲NOT NULL?

平時開發過程中,MySQL 字段的一般都會設置爲NOT NULL,原因如下:

1、空值("") 和 “NULL” 的區別:

  1. 空值是不佔用空間的
  2. MySQL中的NULL其實是佔用空間的

NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.

所謂的NULL就是什麼都沒有,連\0都沒有,\0在字符串中是結束符,但是在物理內存是佔空間的,等於一個字節,而NULL就是連這一個字節都沒有。

2、不利於查詢優化

如果查詢中包含可爲NULL的列,對MySQL來說更難優化,因爲可爲NULL的列會使索引、索引統計和值比較都更復雜。

當可爲NULL的列被索引時,每個索引記錄需要一個額外的字節,在MyISAM裏面甚至可能導致固定大小的索引(例如只有一個整數列的索引)變成可變大小的索引。

參考資料:

本文作者: haxianhe
本文鏈接: https://haxianhe.github.io/2020/05/16/爲什麼MySQL字段要設置爲NOT-NULL/
版權聲明: 本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 許可協議。轉載請註明出處!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章