mysql 中 null 值表示未知或不存在,存儲為一個 1 比特的位字段標(biāo)記,位于每個列數(shù)據(jù)值末尾。這種存儲方案高效地表示 null 值,只需 1 比特,允許快速檢查,并減少存儲空間。
MySQL 中 NULL 的存儲
NULL 的含義
在 MySQL 中,NULL 表示一個未知或不存在的值,與 SQL 標(biāo)準(zhǔn)中的概念相同。
存儲方案
MySQL 不直接存儲 NULL 值。相反,它使用一個特殊值來表示 NULL,稱為 bit-field marker (位字段標(biāo)記)。
bit-field marker 是一個 1 比特的值,保存在表中每個列的末尾。當(dāng)該值為 0 時(shí),表示該列的值存在;當(dāng)該值為 1 時(shí),表示該列的值為 NULL。
存儲結(jié)構(gòu)
如下所示,每個列分配的空間中包含數(shù)據(jù)值和 bit-field marker:
<code>| 數(shù)據(jù)值 | bit-field marker |</code>
登錄后復(fù)制
效率優(yōu)化
MySQL 使用 bit-field marker 來表示 NULL 是一種高效的存儲方案,因?yàn)樗?/p>
只需要 1 比特來表示 NULL 值
允許快速檢查 NULL 值,只需要檢查 bit-field marker 即可
減少了存儲空間,因?yàn)?NULL 值不需要存儲其實(shí)際值






