gpt4 book ai didi

mysql - 数据库模型: Name/Value pair

转载 作者:行者123 更新时间:2023-11-30 00:19:07 28 4
gpt4 key购买 nike

我即将编写一个可以注册信息的应用程序。该应用程序应该能够在许多不同的领域使用,有些值应该是可搜索的,有些则不能,因此我提出了以下数据库模型:

           ----------
| Node |
----------
|
---------------
| |
--------- ---------
| Attr | | IAttr |
--------- ---------

Attr Table 是一个至少包含两列 Name 和 Value 的表。
IAttr 表具有相同的设置,不同之处在于 Value 列上有索引。

有些事情告诉我,这不是一个好的方法,但我不能说出原因。我想得到有关这是否不好以及原因的评论。我想使用的数据库是 Oracle/MySQL 或类似的。

谢谢

最佳答案

以这种方式在表之间分割数据被称为 partitioning (在本例中为水平),以及 MySQL supports horizontal partitioning .

您当然可以自己对数据进行分区并在应用程序中管理它,或者您可以使用分区功能并让 MySQL 为您处理。

如果您使用MySQL的分区,即使未搜索的值上仍然有索引,您也可以将搜索到的数据保留在自己的分区中,以使索引保持在最小大小,从而提高搜索性能。

推出您自己的分区可以避免在非搜索表上建立额外的索引,这将提高该表的写入性能并减少内存占用,当然,代价是代码的复杂性。

我建议您避免预先优化,并尝试让事情尽可能简单。仅在确实需要时以优化的形式增加复杂性,并且通常需要大量测试或实际使用来确定成本和值(value)。

要么使用 MySQL 的分区,要么一开始根本不使用,然后从那里开始。

关于mysql - 数据库模型: Name/Value pair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393012/

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