我在工作中被要求多次违反“第一种标准格式”(使用空/空值重复列中的组),“是为了提高计算机处理能力”。简而言之,“学生”表应至少包含8个空字段(例如电话:phone1,电话2,电话3 ...),而不是我的建议-包含电话号码(以及其他可能的元数据)的“电话”表外键是学生证号。我的老板说,最好以这种方式存储它们,因为“ CPU周期更少,这在Web平台中很重要”,而不是使用关系。我说,在最坏的情况下,它可以忽略不计。
在该示例中,使用关系(假设表在中等大小的Web应用程序中充满了很多记录)比使用这种表架构慢得多?
我相信这样做实际上会比您的老板说的要快,但是您可能要确保确保您不会收到更新异常的任务。但是,如果您需要更改表公用的数据(可能会更改所有电话号码的区号...),则可能会产生更多的cpu工作。
—
帕特里克
我对使用现代硬件的情况严重怀疑,如果您对外键进行索引,那么额外的CPU甚至可以测量,尤其是在Web服务器的另一侧。在我的网站上,我们已对表格进行了归一化处理,并且可以在50,000次点击/秒以上的速度下正常运转,而且不费吹灰之力。告诉你的老板坚持打高尔夫,把技术决定留给你!
—
盖乌斯
@Patrick您认为它快很多还是快一点?我认为就像@Gaius一样,在现代硬件上,即使它“更快”,硬件在速度和耐用性方面的收益也微不足道。
—
AeroCross 2011年
我认为速度提升并不重要。仅当您拥有大量数据集并进行荒谬的联接时,您才会看到性能上的任何明显差异。
—
Patrick