数据库(最大)字段长度是否会影响性能?

时间:2011-03-18 14:09:11

标签: sql database performance tsql database-design

在我的公司,我们有一个包含各种表格的遗留数据库,因此有很多很多领域。

许多字段似乎都有很大的限制(例如:NVARCHAR(MAX))从未到达。

是否任意地使字段的最大宽度或比正常输入的字段大2到3倍会对性能产生负面影响?

如何平衡字段长度的性能?有余额吗?

2 个答案:

答案 0 :(得分:7)

这个问题分为两部分:

使用NVARCHAR over VARCHAR是否会影响性能?是的,在unicode字段中存储数据会使存储要求翻倍。存储在这些字段中的数据是其所需大小的2倍(直到SQL Server 2008 R2出现,包括unicode compression。您的表扫​​描将花费两倍的时间,只有一半的数据可以存储在内存中在缓冲区缓存中。

使用MAX是否会影响性能?不是直接,但是当你使用VARCHAR(MAX),NVARCHAR(MAX)和那些类型的字段时,如果你需要索引表,你将无法在SQL Server 2005/2008 /中在线重建这些索引R2。 (Denali在带有MAX字段的表周围带来了一些改进,因此可以在线重建一些索引。)

答案 1 :(得分:2)

是的,查询优化器可以猜测页面中有多少行,如果你有大量varchar字段大于必要,SQL Server可以在内部猜出错误的行数。