gpt4 book ai didi

mysql - 实体属性值模型 - 性能替代方案?

转载 作者:行者123 更新时间:2023-11-29 05:33:18 24 4
gpt4 key购买 nike

我使用 PHP 和 mySQL。

我有一个页表和一个元表。看起来有点像这样。

页表

page_id | headline    | content
--------------------------
1 | My headline | My content
2 | Another one | Another text

元表

id | page_id | meta_key  | meta_value
------------------------------------
1 | 2 | seo_title | Hello world
2 | 2 | price | 299

我读到过这种类型的模型叫做 EAV .我还读到它是 bad for performance .

我的元表是为连接到页面的任何类型的值而创建的。这次我无法创建包含“静态”列的表。

问题

  • 对于每页有 30 个元值的 300 个页面来说,这有多糟糕? 9000元表中的行。
  • “动态”数据是否有更好的模型?

最佳答案

首先,有时这种模型会使查询数据变得更加容易。几天前我问了一个问题 here 一些用户建议我为什么不将我的模型更改为 1NF 形式以使查询数据更容易。只有当他们意识到我被这个设计所困时,他们才提供了一些问题的答案。关键是我很幸运,只有 12 列要总结;否则,如果我的表包含 300 列,也许没有用户会费心为该问题编写查询。 :-)

其次,有时由于数据库自然强加的一些限制,这种设计的实现更容易。如果您的 meta_key 值包含一些超过 30 个字符的冗长值,您要么必须缩短值并在某处进行映射,要么这可能是您唯一的选择。

最后,性能非常重要;这是真的。但是,另一方面,您可以应用某些技术来提高性能;例如通过创建适当的索引、分区表等。

在这种情况下,表的大小非常小。因此,除非您的查询非常复杂,例如具有繁重的计算和复杂的连接和聚合,并且如果应用程序对小时间分数不敏感,我想如果采用此模型,您不会受到性能影响。

最后,如果您仍然太在意性能,我建议创建两个模型,用一些随机或真实数据填充它们,并分析计划成本以查看哪个模型更符合您的需求。

关于mysql - 实体属性值模型 - 性能替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12882531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com