日期:2014-05-18  浏览次数:20515 次

请假个问题!
SQL code
/*
表中记录Rows:40846773
字段SN:nonclustered, unique, primary key located on PRIMARY
*/

set statistics IO on
declare @SN varchar(20)='ABCDEFGH'
select * from TB where SN=@SN
set statistics IO off

--扫描计数 0,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。


set statistics IO on
declare @SN1 nvarchar(20)='ABCDEFGH'
select * from TB where SN=@SN1
set statistics IO on

--扫描计数 1,逻辑读取 6346 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次




数据库用的sql2008
为什么@SN varchar类型的和@SN1 nvarchar类型会有这样的差别?

谢谢!

------解决方案--------------------
sf 你好意思发60的帖子
------解决方案--------------------
你把缓存清了比较结果
------解决方案--------------------
哥,你不会把两段代码放一起执行的吧?
------解决方案--------------------
同意楼上的。。我也怀疑你是两段代码一起执行的。。。
------解决方案--------------------
没有你那个表,换了个表,在08上测,用 varchar 和 nvarchar 木有区别.
------解决方案--------------------
这个是取决于SN类型的,说明你表里的SN是varchar类型而不是nvarchar,相关的还有int和bigint.