1. 程式人生 > >為什麼欄位儘可能用NOT NULL,而不是NULL

為什麼欄位儘可能用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