关系是否比大而低效的表慢?

Aer*_*oss 8 mysql rdbms join database-recommendation

我在工作中被要求多次违反第一范式(跨列重复组,使用空/空值),“为了计算机处理能力”。简而言之,一个“学生”表应该至少有 8 个空字段(例如电话:telephone1、telephone2、telephone3...)而不是我的建议 - 一个包含电话号码(和可能的其他元数据)的“电话”表外键是学生证号。我的老板说最好以这种方式存储它们,因为“CPU 周期更少,这在 Web 平台中很重要”,而不是使用关系。我说,在最坏的情况下,它可以忽略不计。

在那个例子中,使用关系(假设在一个中等规模的 web 应用程序中用大量记录填充表)明显比使用那种表模式慢?

SQL*_*tar 10

我不明白有人怎么能在没有一些实际事实支持的情况下做出这样的声明。如果您的查询受 CPU 限制,那么您应该寻找减少该瓶颈的方法。

听起来好像您的老板认为非规范化数据库的性能最好,但我对您的应用程序了解得不够多,无法判断这是否正确。该表的预期删除、更新和插入次数是多少?

我预计这种非规范化设计可能会减少 CPU 时间,但预计您的磁盘 I/O 会增加。从磁盘进行物理读取将比 CPU 周期昂贵得多,所以也许你的老板有一个非常具体的指标要满足(CPU),因此想要一个非常具体的设计?如果是这样,我将简单地构建所需的内容并保留正在运行的查询的 CPU 成本指标。如果您看到时间有所增加,那么您可能需要提出一些设计更改建议。

事实上,获得一份你的老板想要查看的所有指标的列表,并随着时间的推移跟踪这些指标可能是一个好主意。