关于选择数据类型

2024-03-02

如果在表的某一列中我希望值为“是”、“否”或“可选”,那么我需要使用什么数据类型?


BIT:

  • 占用 1 个字节,但在 SQL Server 中最多可以将 8 个 BIT 字段合并为一个 BYTE。
  • 存储两个值之一:1(表示 true)和 0(表示 false),因此该列需要可为空,以便 NULL 作为第三个值传递

CHAR(1)

  • 占用1个字节
  • 如果不区分大小写,则为 26 个字符 ASCII;如果区分大小写,则为 52 个字符

TINYINT

  • 占用1个字节
  • 值 0 到 255

表现

所有选项占用相同的空间量,使得 JOIN 等的性能相同。

比较

BIT如果可能的值有可能发生变化,则不是最明智的选择。CHAR(1)立即可读 IE:Y、N、O。TINYINT对于要通过外键关联的表中的主键,并将描述性文本存储在另一列中,这是一个不错的选择。

结论:

CHAR(1)如果不使用外键关系,这将是我的选择,TINYINT否则。
对于 CHAR(1),不太可能有单个字符的自然主键。如果您有 2 个以上以相同字符开头的单词,则假设基于主角的自然键会失败,并且如果标签需要更改,则会导致悲伤,因为键也应该更改并永久存在(除非您很懒并且喜欢解释)为什么代码不遵循与其他代码相同的方案)。 CHAR(1) 还提供了 TINYINT 所提供的大约五分之一的可能性(假设上限为 52 个区分大小写的值)——人工/代理键将描述更改隔离开来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于选择数据类型 的相关文章

随机推荐

  • aws s3 同步命令仅基于文件大小?

    是否可以运行 s3 同步命令 但仅根据文件大小上传文件 而不仅仅是包含文件的修改日期时间 我目前正在运行 aws s3 sync app dist s3 mywebsite me dist acl public read 我遇到的问题是我在
  • collectionView:cellForItemAtIndexPath: 永远不会被调用

    我有一个 UICollectionView 我只是想让它显示出来 我在界面生成器中将委托和数据源附加到文件的所有者 collectionView numberOfItemsInSection 被叫就好了 我已经搞砸了几个小时了 只是无法弄清
  • Android Room - 错误:无法弄清楚如何将此字段保存到数据库中

    详细日志 error Cannot figure out how to save this field into database You can consider adding a type converter for it privat
  • Xcode 6.x/iOS 8 隐藏横向状态栏

    使用 Xcode 6 x 构建的应用程序会在横向 iPhone 中自动隐藏状态栏 使用 Xcode 5 x 编译的同一应用程序不会这样做 如何防止应用程序在横向模式下隐藏状态栏 基本上 我怎样才能禁用 Apple Xcode 强加给我的这个
  • WPF-验证错误事件不会触发

    我想我已经阅读了所有相关文章 但没有一篇有帮助 我正在尝试启用 禁用保存按钮datagrid通过错误状态 但没有成功 这是我的代码 承包商 AddHandler Validation ErrorEvent new RoutedEventHa
  • Pandas:如何将具有重复索引值的数据帧转换为字典

    我有一个数据框df test如下 a b c 5 7 1 6 7 0 15 17 1 16 17 0 Question 我正在尝试从此数据帧创建一个字典 其中 b 列作为索引 请注意列中的值b被重复 当我使用下面给出的代码创建字典时 它仅将
  • 如何更改 Flutter 桌面应用程序的应用程序图标和应用程序名称?

    我正在使用 Flutter 开发 Windows 桌面应用程序 但不知道如何更改应用程序的名称和图标 我想我已经找到了解决方案 以下应该适用于 Windows 应用程序 更改应用程序图标 只需将图标文件放在下面windows runner
  • 如何测量Qt中函数的运行时间?

    我正在打电话argon2 https en wikipedia org wiki Argon2 Qt 中的内存密集型哈希函数并测量其运行时间 QTime start QTime currentTime call hashing functi
  • IIS 7 日志请求正文

    我需要记录向 IIS 发出的请求的请求发布负载 是否可以使用 IIS 7 5 中的现有日志记录和高级日志记录模块来配置请求发布有效负载的日志记录 或者任何人都可以引导我使用允许我记录发布有效负载的任何自定义模块 实际上是可以做到的 根据ht
  • (C# 7.2)“private protected”修饰符的用例是什么?

    C 7 2 引入了 private protected 修饰符 https learn microsoft com en us dotnet csharp language reference keywords private protec
  • laravel 5.4 中 ResetPasswords.php 中未定义路由 [password.reset]

    我在我的自定义应用程序中收到此错误 InvalidArgumentException in UrlGenerator php line 304 Route password reset not defined 我知道 laravel 提供了
  • 鼠标光标位置改变

    您好 我有一个 Windows 窗体应用程序 我想移动鼠标 然后拖放将起作用 但我尝试使用 mousemove 鼠标事件来执行此操作 但似乎拖放非常敏感 所以我要问的是是否可以检测鼠标光标是否从当前光标移动至少一定距离 然后执行拖放代码 我
  • 如何在 C# 中恢复 SQL Server 2012 数据库 .bak 文件?

    我在 Windows 窗体中开发了一个 MIS 其中我备份了 SQL Server 2012 数据库 但我无法恢复备份 bak file 这是我的代码 private void buttonRestore Click object send
  • Mongodb 分片无法在分片之间分割大型集合

    我在 mongodb 中看似简单的分片设置时遇到了问题 我有两个分片 一个 mongos 实例和一个配置服务器 设置如下 机器 A 10 0 44 16 配置服务器 mongos机器 B 10 0 44 10 分片 1机器 C 10 0 4
  • 在 Linux 上捕获 CPU 使用情况的侵入性较小的方法

    工具怎么样Net SNMP http en wikipedia org wiki Net SNMP捕获CPU使用情况 在 Linux 下 侵入性最小的方法是什么 侵入性较小 这样做会消耗最少的机器资源 CPU 和 RAM 最终数据将被保存到
  • Angular:使用带有分隔符/分隔符的 ng-repeat 获取列表

    对 Angular 来说还很陌生 只是在寻找解决办法 我正在使用 ng repeat 输出按字母顺序排列的名称列表 我想在此列表中添加分隔线作为标签 Example A Author 1 Author 2 B Author 3 Author
  • Rails i18n:我可以关闭“翻译丢失”错误吗?

    我有一个多租户应用程序 我正在尝试使用 i18n gem 来允许我们的每个客户根据自己的喜好自定义系统 更改各个页面上的文本 自定义电子邮件等等 诚然 我并没有像预期那样使用 i18n 因为我实际上并没有翻译不同的 语言 一切都是英语 但每
  • Java:JPQL日期函数将一个时间段添加到另一个日期[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SELECT x FROM SomeClass WHERE x dateAtt BETWEEN CUR
  • SQL标准中真的有必要有GROUP BY吗

    编写 SQL 几年后 我发现必须放置我感兴趣的列常常很烦人SELECT然后在中再次指定它们GROUP BY 我不禁想 我们为什么要这么做 用户必须具体指定按哪一列进行分组的原因是什么 难道我们不能让 SQL 引擎假设如果有一个聚合函数SEL
  • 关于选择数据类型

    如果在表的某一列中我希望值为 是 否 或 可选 那么我需要使用什么数据类型 BIT 占用 1 个字节 但在 SQL Server 中最多可以将 8 个 BIT 字段合并为一个 BYTE 存储两个值之一 1 表示 true 和 0 表示 fa