gpt4 book ai didi

sql - 我应该将 XML Blob 放入单独的表中吗?

转载 作者:行者123 更新时间:2023-12-04 14:04:46 25 4
gpt4 key购买 nike

我正在设计一个包含大量记录的事务表。它将有大量的读写。

用户会在某一时刻上传 XML 文件,我将其存储在 XML 类型的数据库列中。

对于给定的交易记录,此 XML 将不会像其他所有内容一样经常被需要。它可能只会被读取几次,并且通常只会被插入而不被更新。

我想知道将此 XML 字段存储在单独的表中是否有任何优势。然后,我可以只在需要时加入它。我认为唯一的优势是“主”表上的单个记录占用的空间更少。但是,如果我的表已正确编入索引,那真的重要吗?

我怀疑我对此考虑过度,对我的优化还为时过早。我应该只将 XML 字段留在主表上吗?

我有一个示例 XML 文件是 12KB。我不希望它变得比这大得多。我不确定 SQL Server 的 XML 数据类型是否会比这更有效地存储信息。

澄清一下,这是一对一的关系。每笔交易都会有一个 XML blob。不会有一个 XML blob 用于多个事务。而且每个交易都应该最终得到一个 XML blob,即使它不是即时的。

谢谢,泰德兹

最佳答案

答案是您无需修改​​或以其他方式妥协您的逻辑 数据设计来适应这种物理 存储考虑。

这是因为在 SQL Server 中,XML 是一种“大值类型”,您可以通过使用 '大值类型 out 来控制这些是物理存储在行内还是行外sp_tableoption 系统过程中的 row' 选项,如下所示:

EXEC sys.sp_tableoption N'MyTable', 'large value types out of row', 'ON'

如果将其关闭,则小于 8000 字节的 XML 值将存储在行内。如果将其设置为 ON,则所有 XML 值(和 [N]Varchar(MAX) 列)都将存储在表外的单独区域中。 (这一切都在这里详细解释:http://technet.microsoft.com/en-us/library/ms189087(SQL.105).aspx)

将其设置为哪个的问题很难说,但一般来说:如果您希望多次检索/修改此列,我建议将其放在行内。否则将其存储在行外。

关于sql - 我应该将 XML Blob 放入单独的表中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14126664/

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