不需要的字段是否应该经常保存在单独的表中?

JD *_*cks 3 performance

我的网站上有一个标记系统。我还想像在 SE 网站上一样为标签添加描述。

标签用于很多东西。它的类别如何知道要展示哪些产品,用户如何进一步深入到类别中,如何设置产品属性,优惠券如何知道它们也可以应用哪些产品等。

因为如果这样我希望标签表尽可能高效。任何这些任务都不需要标签描述,我只想添加它们,以便输入数据的人可以跟踪每个标签的用途(如果标签名称不言自明)

我只想在标签表中添加一个描述列,但我担心会损害所有其他不需要描述的逻辑的性能。我想知道将它们保存在单独的tag_descriptions表中是否对性能更好?

顺便说一句,我使用的是使用 ORM 的 CakePHP 框架(我认为它选择 * 用于模型关联)

Der*_*ney 6

由于SELECT * FROMORM的声明,我对这种情况表示同情。一般的 MySQL(可能还有其他 RDBM)索引理论是只选择您需要的列,最好完全从索引中选择。

话虽如此,答案取决于您期望获得多少流量才能看到性能显着下降。它还取决于您将从类别描述中获得多少使用量。

当您确实需要获取描述时,我不认为将描述存储在同一个表中会降低性能以保证对数据库的 2 次调用。

总而言之,我认为使用 ORM 比将描述存储在同一个标​​签表中存在更大的性能问题。

  • +1 表示:“总而言之,我认为使用 ORM 比将描述存储在同一个标​​签表中存在更大的性能问题。” (4认同)