繁体   English   中英

单独的表中的SQL Server varbinary(max)和varchar(max)数据

[英]SQL Server varbinary(max) and varchar(max) data in a separate table

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

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

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

根据这个线程在单独的1-1表中使用varbinary字段有什么好处?

没有我在某种程度上同意的性能或运营效益,但我可以看到两个好处

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

任何建议,将不胜感激。

我会建议反对分离。 它使设计复杂化很少或没有任何好处。 您可能知道,SQL Server已将LOB存储在单独的分配单元上,如表和索引组织中所述

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

您的第二个问题不再是SQL Server 2012的问题,请参阅包含LOB列的索引的在线索引操作 甚至在SQL Server 2012之前,您可以使用LOB重新组织索引而不会出现问题(并且REORGANIZE在线)。 鉴于完整索引重建是一项非常昂贵的操作( 必须在表/索引级别进行在线重建,没有分区在线重建选项),您确定要使设计复杂化以适应某些内容,一方面,很少需要,另一方面,在升级到SQL 2012时可用吗?

我可以用一个简单的词来回答你的问题:吻。

这当然代表...保持简单愚蠢。

添加表通常是禁止的,除非您真的需要一个来解决问题。

一般来说,我不同意拆分表。 它增加了数据库和代码的复杂性。 在表中使用无用的列是一件坏事,但是当你只需要一个表时它没有多个表那么糟糕。

您考虑添加另一个表的情况:

  1. 您的某些列是BloB的数据(大于页面大小),很少使用它们,并且经常访问其他数据量较小的列。
  2. 如果你缺乏大脑。
  3. 如果你是邪恶的。
  4. 或者......如果你试图惹恼你的同事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM