MySQL建議列屬性盡量為NOT NULL

2021-09-12 04:07:54 字數 673 閱讀 4772

除非你有乙個很特別的原因去使用 null 值,你應該總是讓你的字段保持 not null。這看起來好像有點爭議,請往下看。

首先,我們要搞清楚「空值」 和 「null」 的概念:

1、空值是不占用空間的

2、mysql中的null其實是占用空間的

所謂的null就是什麼都沒有,連\0都沒有,\0在字串中是結束符,但是在物理記憶體是佔空間的,等於乙個位元組,而null就是連這乙個位元組都沒有。在資料庫裡是嚴格區分的,任何數跟null進行運算都是null, 判斷值是否等於null,不能簡單用=,而要用is null關鍵字。

資料庫的字段id設為not null, 僅僅說明該欄位不能為null, 也就是說只有在

insert into table(id) values(null);

這種情況下資料庫會報錯,而

insert into table(id) values( 『 『);

這不能說明是null, 資料庫系統會根據id設的預設值填充,或者如果是自增字段就自動加一等預設操作。

盡量避免null:應該指定列為not null,除非你想儲存null。在mysql中,含有空值的列很難進行查詢優化,而且對錶索引時不會儲存null值的,所以如果索引的字段可以為null,索引的效率會下降很多。因為它們使得索引、索引的統計資訊以及比較運算更加複雜。你應該用0、乙個特殊的值或者乙個空串代替空值。

為什麼建議MySQL列屬性盡量用NOT NULL

在 高效能mysql 中提到,通常情況下最好指定列為not null,除非真的需要儲存null值。雖然把null 改成not null 對索引的效能並沒有明顯提公升,但可能會出現不必要的麻煩。測試如下 create table t1 id int 11 not null name varchar 2...

mysql使用建議,盡量避免這些問題

做伺服器端開發的同學們,相信對於mysql應該是十分熟悉,但是一旦真正出現問題,你是否能夠快速的發現問題的起因,並且解決呢?一旦問題涉及到資料庫層面,往往不是那麼好解決的,通常來說,我們需要提前做應對未來可能出現問題的準備。下面是幾條針對mysql使用的優化建議 儘量減少資料庫上的計算操作 將那些需...

mysql使用建議,盡量避免這些問題

做伺服器端開發的同學們,相信對於mysql應該是十分熟悉,但是一旦真正出現問題,你是否能夠快速的發現問題的起因,並且解決呢?一旦問題涉及到資料庫層面,往往不是那麼好解決的,通常來說,我們需要提前做應對未來可能出現問題的準備。下面是幾條針對mysql使用的優化建議 儘量減少資料庫上的計算操作 將那些需...