限制Sql Cell中的字符长度,与内存和性能有显着差异?

时间:2009-08-17 17:31:05

标签: sql database-design

我没有在我的字段中使用NVarchChar(max),而是任意限制长度。限制这些领域真的会在性能方面产生重大影响吗?每100个? 200? 1000个字符?

2 个答案:

答案 0 :(得分:2)

您的问题暗示您正在使用SQL Server 2005/2008,因此我将对此进行分析。在当前架构中,重要性在于存储本身。当您连续存储超过8k时,它将进入单独的内部表分区以进行行溢出或文本(或大对象数据)。

根据您的设置,SQL将指向nvarchar数据的另一个分区。检索数据后,SQL必须获取页面,然后查找另一个页面以获取该行的全部内容。

如果表的定义没有达到最大8060字节的可能性,那么你可以保证你不必从指针进行虚假查找(这会增加读数)。

另外,请记住,SQL 2008(企业版)可以使用页面和行级压缩,因此使用该功能时规则会稍有变化。

答案 1 :(得分:1)

SQL使用4K块,即4000个字符(如果使用NVARCHAR则为2000,因为每个chr加倍)。如果您将数据设置为TEXT或varchar(max)/ nvachar(max),如果数据大于4000/2000,则可能会出现重大性能问题,因为数据库必须在内部开始分页结果。