在我的公司中,我们有一个包含各种表的遗留数据库,因此包含许多字段。
许多字段似乎都有NVARCHAR(MAX)从未达到的大限制(例如:)。
NVARCHAR(MAX)
是否将字段的最大宽度设置为最大宽度或比通常输入的字段大2到3倍会对性能产生负面影响?
一个应如何在性能与字段长度之间取得平衡?有平衡吗?
这个问题有两个部分:
在VARCHAR上使用NVARCHAR是否会损害性能?是的,将数据存储在unicode字段中会使存储需求增加一倍。存储在这些字段中的数据大小是所需大小的2倍(直到SQL Server 2008 R2出现,其中包括unicode压缩。表扫描的时间将是原来的两倍,并且只能将一半的数据存储在缓冲区的内存中缓存。
使用MAX是否会损害性能?不是直接的,但是当您使用VARCHAR(MAX),NVARCHAR(MAX)和这些类型的字段时,并且如果需要对表进行索引,则将无法在SQL Server 2005/2008 /中在线重建这些索引R2。(Denali对具有MAX字段的表进行了一些改进,因此可以在线重建某些索引。)