laravel - 将选择字段分隔到单独的表是否对性能很重要?
问题描述
我有患者表它包含吸烟字段它的值将是(吸烟者或非吸烟者或前吸烟者)
我的问题是我应该将值直接保存为患者表中的字符串还是制作另一个吸烟表并在这些表之间建立一对一的关系?
是否会影响查询的性能
解决方案
当我有这样的三个选项时,我通常使用可为空的位/布尔值。位/布尔列将比字符串列更高效。
因此,在您的情况下,我的表将有一个“吸烟”列,其中 null 表示非吸烟者,0/false 表示前吸烟者,1/true 表示吸烟者。
如果您认为以后可能会添加选项,例如“最近退出”或其他内容,那么可为空的 bool 可能并不理想,因为您必须更改列,然后编写脚本将所有选项转换为适当的字符串。
如果您不想使用可为空的布尔值,那么您需要一个列出每个选项的一对多表:“吸烟者、非吸烟者、前吸烟者”,然后在“吸烟”表中添加一个外键在您的患者表中。这也将提高在列中抛出字符串的性能。
推荐阅读
- mongodb - MongoDB 聚合 $group 和 $project 与组结果
- asp.net - CS0433:“A”和“B”中都存在“X”类型 - 作为 Azure Devops 发布管道的一部分,从 Azure AppService 清除临时 ASP.NET 文件?
- merge - 三js:将多个对象合并为一个
- c - stringTOint 八进制和十六进制转换
- android - 带有 FragmentPagerAdapter 的匕首 - android
- database - 什么方法最适合创建在线 Web 可访问数据库?
- php - 带有 PHP 和复选框的图像
- xml - 如何分离前三个 XML 标记并创建 XML
- angular - Angular - 在库中使用应用程序主题
- java - 当我只想为特定单元格着色时,JTable 正在为每个单元格着色