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