处理许多冗长的文本字段

时间:2013-01-11 22:30:01

标签: sql-server-2008 database-design varchar page-size

我正在设计一个SQL Server数据库,需要有相当多的(大约15个)varchar个字段,其中大多数我想分配的长度至少为< em> 1024或2048 。由于这显然远远超出 8060 的页面大小,我意识到数据库在访问此表时可能会受到很大的性能影响。

我还考虑将这些叙述分组为类似的主题并制作 3或4个单独的表,或者仅创建一个表varchar(max)字段和int代表的表格叙事类型:

create table Narrative
(
  narrative varchar(max),
  narrativeType int
)
  1. 原设计是否会对性能产生重大影响?
  2. 处理大型文本字段时可以使用哪些类型的最佳做法?

2 个答案:

答案 0 :(得分:1)

我不认为我的答案是关于这个问题的最后一句话。也许其他人可能会增加这一点。

由于它的大小,您将无法在VARCHAR(MAX)列上构建群集或非群集索引。这将使您在桌面上的搜索速度非常慢。 但是,您将能够使用Full Text Search,这将显着提高性能。

就个人而言,如果可以避免,我不会将数据分成多个表。这样做的原因是它使查询同类数据很麻烦。

对于Full Text Search\Indexing,如果您的文本是多种语言(FTS取决于语言),您可能会想要创建多个表。我通过在我的桌面上创建多个Indexed Views并在Indexed Views上构建全文索引来解决这个问题

如果您期望大量数据,可能需要考虑Partitions

最好仔细阅读有关主题的内容,然后进一步完善您的问题。

答案 1 :(得分:0)

我决定继续将这些叙述分成他们自己的表格,与主表格保持1:1的关系。我不怀疑我将永远查询这些varchar字段中的值,并且不需要对它们进行任何索引。此外,它们的访问频率远低于原始表中的任何其他字段,因此将它们拉入单独的表有助于集中数据库设计,甚至可以提高性能,因为它们只需要在绝对必要时处理