1

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

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

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

2 回答 2

1

我不声称我的回答是关于这个主题的最终决定。也许其他人可以补充这一点。

VARCHAR(MAX)由于列的大小,您将无法在列上构建聚集或非聚集索引。这将使您的桌子上的搜索变得非常缓慢。但是,您将能够使用全文搜索,这将显着提高性能。

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

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

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

最好阅读有关这些主题的更多信息,然后进一步完善您的问题。

于 2013-01-12T05:38:16.300 回答
0

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

于 2013-01-18T16:25:04.327 回答