為什麼欄位儘可能用NOT NULL,而不是NULL
NULL為什麼多人用?
1、NULL是建立資料表時預設的,初級或不知情的或怕麻煩的程式設計師不會注意這點。
2、很多人員都以為not null 需要更多空間,其實這不是重點。
3、重點是很多程式設計師覺得NULL在開發不用去判斷插入資料,寫sql語句的時候更方便快捷。
網上很多資料都有寫:
Mysql官網文件:
“NULL columns require additional space in the rowto record whether their values are NULL. For MyISAM tables, each NULL columntakes one bit extra, rounded up to the nearest byte.”
-----------------------------------------------
Mysql難以優化引用可空列查詢,它會使索引、索引統計和值更加複雜。可空列需要更多的儲存空間,還需要mysql內部進行特殊處理。可空列被索引後,每條記錄都需要一個額外的位元組,還能導致MYisam 中固定大小的索引變成可變大小的索引
--------這也是《高效能mysql第二版》介紹的
解讀:
“可空列需要更多的儲存空間”:需要一個額外位元組作為判斷是否為NULL的標誌位
“需要mysql內部進行特殊處理”:http://www.phpben.com/?post=69 這是mysql索引統計,裡面有介紹mysql怎麼處理NULL。
注意:但把NULL列改為NOT NULL帶來的效能提示很小,除非確定它帶來了問題,否則不要把它當成優先的優化措施,最重要的是使用的列的型別的適當性.
來自:http://blogread.cn/it/article/5967?f=hot3