3

我刚开始学习自定义 wordpress 查询并遇到了 wordpress 数据库。我只是惊讶地发现数据库没有标准化。我的意思是可以使用这样的结构(即具有冗余数据)以防万一您没有大量数据但如果您有大量数据怎么办。它的性能会降低,不是吗?我的问题是:

为什么如此知名的产品会使用非规范化数据库?背后有什么具体原因吗?

在此处输入图像描述

4

1 回答 1

7

将“发布”存储为字符串而不是对查找表的代理键引用的好处是避免JOIN查找表。

您给出的示例将“发布”一词存储在多行上,这本身并不是非规范化。您可能会将规范化与使用代理键混淆。这是两个独立的东西。代理键(自动增量“id”主键)与规范化无关。

非规范化数据的原因是为某些查询提供更好的性能。

正如您所指出的,任何此类优化都会带来风险。

  • 由于冗余数据存储,您可能会遇到数据异常。
  • 存储的大小可能会增加(尽管单个 WordPress 实例不可能存储很多)。
  • 不同的查询可能有更差的性能。

非规范化的最佳实践是确定您知道哪些查询需要具有最佳性能,然后编写代码来处理额外的工作,以确保在有冗余存储时数据完整性。

于 2013-08-12T06:41:35.027 回答