SQL Server nvarchar(max)vs nvarchar(n)影响性能
这是SQL Server 2008 R2 SP2。我有2张桌子。两者是相同的(数据和索引),除了第一个表的VALUE列nvarchar(max)与第二个表的列相同nvarchar(800)。该列包含在非聚集索引中。我还在两个表上创建了聚集索引。我还重建了索引。此列中的最大字符串长度是650。 如果我对两个nvarchar(800)表运行相同的查询的速度始终更快,那么很多倍。当然,这似乎正在破坏“ varchar”的目的。表格包含800,000多行。该查询应查看大约110,000行(这是该计划的估计值)。 根据io统计信息,没有lob读取,因此所有内容似乎都在行中。执行计划是相同的,除了两个表之间的开销百分比略有不同,并且估计的行大小更大时nvarchar(max)(91字节对63字节)。读取次数也几乎相同。 为什么会有所不同? =====架构====== CREATE TABLE [dbo].[table1]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [ProductID] [bigint] NOT NULL, [ProductSkeletonID] [bigint] NOT NULL, [Value] [nvarchar](max) NOT NULL, [IsKeywordSearchable] [bit] NULL, [ValueInteger] [bigint] NULL, [ValueDecimal] [decimal](18, 2) NULL, [ValueDate] [datetime] NULL, [TypeOfData] [nvarchar](20) NOT NULL, CONSTRAINT [PK_table1] PRIMARY …