【发布时间】:2010-10-31 03:03:50
【问题描述】:
我有一张这样的桌子:
create table SomeTable (
tableKey int identity(1,1) not null
, foreignKey int not null
, longDesc nvarchar(max) not null
, shortName varchar(100) null
)
我需要在 where 子句中使用 shortName:
select
tableKey
from
SomeTable
where
foreignKey = @foreignKey
and shortName = @shortName
这需要很快 - 这个表有数百万行。我可以将它移到 longDesc 列上方并看到速度增加吗?我假设只要列的大小不变,数据库就可以简单地跳转到正确的字节偏移量。跳过 varchar 列肯定会导致某种性能损失,是吗?
或者,如果我制作 longDesc nchar(3784) 会怎样? (这应该让每一行填满一个 8KB 的页面)这样会提高速度吗?
我看到其中一个answers here 暗示顺序在已用空间方面很重要,但我不确定这如何转化为性能。
【问题讨论】:
标签: sql-server sql-server-2005 performance