2013-01-11 18 views
1

我設計的是需要有相當多的(約15)varchar領域,其中大部分我想至少分配1024或2048長度的SQL Server數據庫。由於這顯然會遠遠超出頁面大小,我意識到數據庫可能會在訪問此表時遇到很大的性能影響。處理大量的冗長文本字段

我亦考慮分組這些敘述成類似對象,使3或4個單獨的表,或者只是創建一個表具有varchar(max)字段和int表示敘述類型:

create table Narrative 
(
    narrative varchar(max), 
    narrativeType int 
) 
  1. 原始設計是否會有顯着的性能下降?
  2. 處理大型文本字段時可能會使用哪些最佳做法?

回答

0

我決定繼續前進,並將這些敘述與主表格以1:1的關係分解到他們自己的表格中。我不懷疑我將永遠不會查詢這些varchar字段中的值,並且不需要對它們進行任何索引。此外,它們的訪問次數比原始表中的其他任何字段都要少得多,因此將它們拉入單獨的表格有助於關注數據庫設計,甚至可以提高性能,因爲它們只需在絕對必要時處理。

1

我不要求我的答案是關於這個問題的最後一句話。也許別人可以增加這一點。

由於它的大小,您將無法在VARCHAR(MAX)列上構建聚簇索引或非聚簇索引。這會使你的桌面搜索速度很慢。 但是,您將可以使用Full Text Search,這將顯着提高性能。

就我個人而言,如果可以避免的話,我不會將數據拆分成多個表。其原因是它使查詢同質數據變得麻煩。

對於Full Text Search\Indexing,如果您的文本是多種語言(FTS取決於語言),您可能會試圖創建多個表。我已經在我的表創建多個Indexed Views和構建全文索引圍繞這個工作我Indexed Views

如果你期待大量數據,你可能要考慮Partitions

或許,這將是最好的閱讀有關這些主題的更多信息,然後進一步優化您的問題