选择将所有文本列的数据类型设置为ntext有什么不利之处吗?

24 浏览
0 Comments

选择将所有文本列的数据类型设置为ntext有什么不利之处吗?

是否选择'ntext'作为列类型而不是包含字符但具有有限最大大小的类型(如'char'或'varchar')有一般性的缺点?

我不确定是否所有的列都适用于有限的列大小。因此,我将在所有包含文本的列中使用'ntext'。这样做是否会导致将来出现问题?

(我在一个ASP.net Webforms应用程序中使用Linq-To-SQL)

0
0 Comments

在选择ntext作为所有文本列的数据类型时,是否存在问题?

ntext正在被废弃,所以应该使用NVARCHAR(MAX)替代。

对于列,应始终尽可能使用最小的数据类型。如果需要支持超过4000个字符的字段,则需要使用NVARCHAR(MAX)。如果不需要支持超过4000个字符,则使用NVARCHAR(n)。

我认为ntext始终会存储在行外,查询时会产生开销。如果可能的话,NVARCHAR(MAX)可以存储在行内。如果无法放入行内,则SQL Server会将其推到行外。请参考此MSDN文章。

编辑:

对于NVARCHAR,最大支持的显式大小为4000。在超过这个大小后,需要使用MAX,可以达到2^31-1字节。

对于VARCHAR,在需要切换到MAX之前,最大支持的显式大小为8000。

哇,我印象深刻。我从未听说过行内/行外存储。如果我使用一个很大的数字作为MAX,何时会遇到性能问题?NVARCHAR(4000)可以吗?和NVARCHAR(40000)有什么区别?NVARCHAR的最大字符大小是多少?

0
0 Comments

在选择将所有文本列的数据类型设为NTEXT时,是否存在不足之处?这个问题的出现原因是大多数标准的T-SQL字符串函数无法与NTEXT数据类型一起使用。解决方法是更好地使用VARCHAR(MAX)或NVARCHAR(MAX)。

0
0 Comments

选择ntext作为所有文本列的数据类型是否有缺点?

在数据库中,文本列的数据类型是一个重要的考虑因素。在这个问题中,我们讨论的是选择ntext作为所有文本列的数据类型是否有缺点。

首先,ntext数据类型用于存储Unicode字符,例如非拉丁字母。这意味着它可以存储比varchar更广泛的字符集。然而,由于Unicode字符需要更多的存储空间,因此ntext数据类型可能会占用更多的存储空间。

其次,有人尝试将存储过程的参数从nvarchar更改为varchar,并发现性能提升了一倍以上。这是因为varchar数据类型在存储和处理非Unicode字符时更有效率。因此,如果你知道你的列不需要存储宽字符,那么最好使用varchar数据类型。

另外,正如其他答案所指出的那样,不要使用text/ntext数据类型,因为它们已经被弃用。相反,应该使用nvarchar(max)或varchar(max)来替代。

选择ntext作为所有文本列的数据类型可能会有一些缺点。为了优化性能和节省存储空间,我们应该根据具体需求选择合适的数据类型,避免使用已经被弃用的数据类型。

0