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

2022-05-30 14:36:07 字數 1583 閱讀 8767

在《高效能mysql》中提到,通常情況下最好指定列為not null,除非真的需要儲存null值。雖然把null 改成not null 對索引的效能並沒有明顯提公升,但可能會出現不必要的麻煩。

測試如下:

create

table

`t1` (

`id`

int(11) not

null

, `name`

varchar(25) not

null

,

primary

key(`id`),

key`idx_name` (`name`)

) engine

=innodb default charset=

utf8;

create

table

`t2` (

`id`

int(11) not

null

, `name`

varchar(25) default

null

,

primary

key(`id`),

key`idx_name` (`name`)

) engine

=innodb default charset=utf8;

建立表sql語句

表t1

表t2

1.not in、!= 等負向條件查詢在有 null 值的情況下返回空行的結果集

select

*from t2 where name !='張三

';

select

*from t2 where name not

in (select name from t2 where id!=

1)

2.使用 concat 函式拼接時,首先要對各個字段進行非 null 判斷,否則只要任何乙個欄位為空都會造成拼接的結果為 null

select concat("1",null);
3.當用count函式進行統計時,null 列不會計入統計

select

count(name) from t2;

4、查詢空行資料,用 is null

select

*from t2 where name is

null;

5、null 列需要更多的儲存空間,一般需要乙個額外的位元組作為判斷是否為 null 的標誌位。

explain select

*from t1 where name ='張三

';

explain select

*from t2 where name ='張三

';

MySQL建議列屬性盡量為NOT NULL

除非你有乙個很特別的原因去使用 null 值,你應該總是讓你的字段保持 not null。這看起來好像有點爭議,請往下看。首先,我們要搞清楚 空值 和 null 的概念 1 空值是不占用空間的 2 mysql中的null其實是占用空間的 所謂的null就是什麼都沒有,連 0都沒有,0在字串中是結束符...

為什麼Mysql 資料庫盡量避免NULL?

在mysql中很多表都包含可為null 空值 的列,即使應用程式並不需要儲存null也是如此,這是因為可為null是列的預設屬性。但我們常在一些mysql效能優化的書或者一些部落格中看到觀點 在資料列中,盡量不要用null 值,使用0,1或者其他特殊標識替換null值,除非真的需要儲存null值,那...

為什麼前端盡量少用iframe

從效能上來講,iframe消耗瀏覽器的效能比用div至少多出十幾倍甚至更多。使用較多時,http請求數目較多,而frame和iframe自身載入速度較慢,布局不易修改。最好使用div替代。只知道皮毛,希望大家能有更詳盡的分析。一般使用ajax來獲取資料,如果獲取的資料不在同乙個網域名稱下互相呼叫資料...