mysql创建字段非空NOT NULL的好处
詳見:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt338
很多表都包含可為 NULL (空值) 的列,即使應(yīng)用程序井不需要保存 NULL 也是如此 ,這是因?yàn)榭蔀?NULL 是列的默認(rèn)屬性。通常情況下最好指定列為 NOT NULL,除非真 的需要存儲 NULL 值。
如果查詢中包含可為 NULL 的列,對 MySQL 來說更難優(yōu)化 ,因?yàn)榭蔀?NULL 的列使 得索引、索引統(tǒng)計(jì)和值比較都更復(fù)雜 ??蔀镹ULL 的列會(huì)使用更多的存儲空間 ,在 MySQL 里也需要特殊處理 。當(dāng)可為NULL 的列被索引肘,每個(gè)索引記錄需要一個(gè)額 外的字節(jié),在 MyISAM 里甚至還可能導(dǎo)致固定大小 的索引 (例如只有一個(gè)整數(shù)列的 索引) 變成可變大小的索引。
通常把可為 NULL 的列改為 NOT NULL 帶來的性能提升比較小 ,所以 (調(diào)優(yōu)時(shí)) 沒有 必要首先在現(xiàn)有schema中查找井修改掉這種情況 ,除非確定這會(huì)導(dǎo)致問題。但是, 如果計(jì)劃在列上建索引 ,就應(yīng)該盡量避免設(shè)計(jì)成可為 NULL 的列。當(dāng)然也有例外 ,例如值得一提的是,InnoDB 使用單獨(dú)的位 (bit ) 存儲 NULL 值 ,所 以對于稀疏數(shù)據(jù)由有很好的空間效率 。但這一點(diǎn)不適用于MyISAM 。
轉(zhuǎn)載于:https://www.cnblogs.com/grefr/p/6088503.html
總結(jié)
以上是生活随笔為你收集整理的mysql创建字段非空NOT NULL的好处的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: protobuf和thrift对比
- 下一篇: C++文本处理_文件读写