gpt4 book ai didi

sql-server - SQL Server varbinary(max) 和 varchar(max) 数据位于单独的表中

转载 作者:行者123 更新时间:2023-12-02 19:11:18 25 4
gpt4 key购买 nike

使用带有 SP2 的 SQL Server 2005 标准版

我需要设计一个表,在其中存储文本文件(~200KB)以及文件名、描述和日期时间。

我们是否应该设计一个表,其中 varchar(max) 和 varbinary(max) 数据应存储在单独的表中,还是应将 LOB 数据类型的列作为主表的一部分?

根据此线程 What is the benefit of having varbinary field in a separate 1-1 table?

不过,我在某种程度上同意没有任何性能或运营优势我可以看到两个好处

  1. 将它们存储到一个可单独的表中,该表可以存储在单独的文件组中
  2. 您无法在包含 lob 数据类型 ONLINE 的表上重建索引

如有任何建议,我们将不胜感激。

最佳答案

我建议不要分居。它使设计变得非常复杂,但几乎没有任何好处。您可能知道,SQL Server 已经将 LOB 存储在单独的分配单元上,如 Table and Index Organization 中所述。 。

您的第一个问题(LOB 数据的单独文件组分配)可以通过在 CREATE TABLE 语句中适当指定所需的文件组来明确解决,正如 Mikael 已经指出的那样。

您的第二个问题不再是 SQL Server 2012 的问题,请参阅 Online Index Operations for Indexes containing LOB columns 。即使在 SQL Server 2012 之前,您也可以使用 LOB 重新组织索引而不会出现问题(并且 REORGANIZE 是在线的)。鉴于完整索引重建是一项非常昂贵的操作(在线重建必须在表/索引级别完成,没有分区在线重建选项),您是否您确定要使设计复杂化,以适应一方面很少需要但另一方面在升级到 SQL 2012 后可用的功能吗?

关于sql-server - SQL Server varbinary(max) 和 varchar(max) 数据位于单独的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8703942/

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