如果在表的某一列中我希望值为“是”、“否”或“可选”,那么我需要使用什么数据类型?
BIT:
- 占用 1 个字节,但在 SQL Server 中最多可以将 8 个 BIT 字段合并为一个 BYTE。
- 存储两个值之一:1(表示 true)和 0(表示 false),因此该列需要可为空,以便 NULL 作为第三个值传递
CHAR(1)
- 占用1个字节
- 如果不区分大小写,则为 26 个字符 ASCII;如果区分大小写,则为 52 个字符
TINYINT
表现
所有选项占用相同的空间量,使得 JOIN 等的性能相同。
比较
BIT
如果可能的值有可能发生变化,则不是最明智的选择。CHAR(1)
立即可读 IE:Y、N、O。TINYINT
对于要通过外键关联的表中的主键,并将描述性文本存储在另一列中,这是一个不错的选择。
结论:
CHAR(1)
如果不使用外键关系,这将是我的选择,TINYINT
否则。
对于 CHAR(1),不太可能有单个字符的自然主键。如果您有 2 个以上以相同字符开头的单词,则假设基于主角的自然键会失败,并且如果标签需要更改,则会导致悲伤,因为键也应该更改并永久存在(除非您很懒并且喜欢解释)为什么代码不遵循与其他代码相同的方案)。 CHAR(1) 还提供了 TINYINT 所提供的大约五分之一的可能性(假设上限为 52 个区分大小写的值)——人工/代理键将描述更改隔离开来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)