mysql - 对我来说,分离公共(public)数据好吗?

标签 mysql sql database postgresql database-design

<分区>

例如,我有“城市”列。 95% 的 City 值为 NULL。制作类似 city_names(Id PK, City) 的表并用新列 City_id 替换 City(FK 引用 city_names(id))是个好主意吗?这是我对此的看法。它们基于一般的计算思想。请纠正我,这不适用于 RDMS。

第一种方式:O(n)存储O(n)批量操作O(1)随机访问

第二种方式:O(n) 存储 O(n * logn) 批量操作由于 n 请求索引结构(B 树,例如)O(lon n) 随机访问

这是完整图片。我有 1M 行表。它生长。像 City 这样有 80 列。他们几乎都为空。但是,它们是社区可编辑的。因此,我必须在其中提供全文搜索、快速编辑时间和复杂查询(针对高级用户或机器人)。在将来,根本不会有 NULL。所以我必须使用绞车方案来编辑​​阶段,并在最终形状中使用表格?

如果重要的话,我会使用 postgres\mysql。

最佳答案

在 PostgreSQL 中,NULLS 几乎没有任何成本(每个 1 位,一次 8 位,加上字对齐,因此具有 > 1 NULL 与值相比,它们变得越来越便宜)。

对于像您这样人口稀少的列,将列移动到它自己的表中没有任何好处,并且一直加入以获取稀疏数据会造成相当大的损失。

关于mysql - 对我来说,分离公共(public)数据好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453012/

相关文章:

java - MS_Access中如何比较Integer类型记录和String类型记录?

sql - 语法问题 SQL Server。结合 Pivot、XML 解析和 JOIN

mysql - web.config 中的程序集引用 MySql.Data 不起作用

mysql - 在 SQL 中使用 Group By 函数时遇到问题

java - 关闭连接后第二次调用PreparedStatement不起作用

sql - 从 jOOQ 中的例程查询

php - 使用 mysql 的 CONCAT() 作为列名

PHP & MySQL 特殊字符编码问题

php - 将 GD 文件调整大小和重命名添加到 php 图片上传脚本

php - 在不嵌入 php 的情况下呈现表单错误