簡體   English   中英

在 SQL 服務器表中存儲大量文本的最佳方法是什么?

[英]What is the best way to store a large amount of text in a SQL server table?

在 SQL 服務器的表中存儲大量文本的最佳方法是什么?

varchar(max) 可靠嗎?

在 SQL 2005 及更高版本中,VARCHAR(MAX) 確實是首選方法。 TEXT 類型仍然可用,但主要是為了向后兼容 SQL 2000 及更低版本。

我喜歡使用 VARCHAR(MAX)(或實際上是 NVARCHAR),因為它的工作方式類似於標准 VARCHAR 字段。 由於它是介紹,我盡可能使用它而不是 TEXT 字段。

Varchar(max) 僅在 SQL 2005 或更高版本中可用。 這將存儲最多 2GB 並且可以被視為常規 varchar。 在 SQL 2005 之前,使用“文本”類型。

在 BLOB 中

BLOB 是非常大的可變二進制或字符數據,通常是文檔(.txt、.doc)和圖片(.jpeg、.gif、.bmp),可以存儲在數據庫中。 在 SQL Server 中,BLOB 可以是 text、ntext 或 image 數據類型,可以使用 text 類型

文本

可變長度的非Unicode 數據,存儲在服務器的代碼頁中,最大長度為231 - 1 (2,147,483,647) 個字符。

根據此處找到的文本, varbinary(max) 是要走的路。 您將能夠存儲大約 2GB 的數據。

將文本拆分為您的數據庫可以實際處理的塊。 並且,將拆分的文本放在另一個表格中。 text_chunk表中的id用作原始表中的text_chunk_id 您可能希望表格中的另一列保留適合您的最大文本數據類型的文本。

CREATE TABLE text_chunk (
     id NUMBER,
     chunk_sequence NUMBER,
     text BIGTEXT)

使用nvarchar(max)將整個聊天對話線程存儲在單個記錄中。 通過插入標記在內容文本中標識每個單獨的文本消息(或塊)。

例子:

{{UserId: Date and time}}<Chat Text>. 

顯示時 UI 應該足夠智能以理解此標記並正確顯示。 這樣,只要未達到大小限制,一條記錄就足以用於單個對話。

NVARCHAR 的好主意:-),但是你們中的任何人都對性能問題有任何經驗。 假設我將在一張表中有 250 萬條記錄,其中一個字段為 NVARCHAR(max)。 當然,假設我在主鍵上或者在 PersonId 上有索引,我不會有任何性能問題。 如果有任何區別,則文本字段不是主鍵。

最好將它們作為 .txt 文件保存到服務器並將文件路徑保存到您的數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM