Nhibernate的HQL调优的一点小经验

一点小经验,写下来做个笔记,也与大家分享一下 

今天在进行性能调优的时候发现一个问题:一句HQL经Nhibernate翻译出来变成SQL后执行效率缓慢

首先来看一下翻译出来的SQL语句

代码
exec sp_executesql N'select top 20 ... from TblRegisteredVisitor registered0_, TblVisitor visitor1_ where registered0_.VisitorID=visitor1_.VisitorID and registered0_.Institution=@p0 order by visitor1_.VisitorIdNumber, registered0_.RegisteredVisitorID',N'@p0 nvarchar(4)',@p0=N'TTSH'

 

 

索引已经创建了,但是logical read依然很高~~

问题出在哪里呢?出在where子句里使用的几个字段都是varchar的,但HQL翻译出的SQL语句中都变成了nvarchar

于是自然的想到HQL语句中的编辑过程中,应该对应的使用SetAnsiString,但代码中却使用了SetString。

于是修正代码为SetAnsiString之后,logical read果然降了下来~~ 

 

posted @ 2010-06-22 15:30  jiaxingseng  阅读(565)  评论(0编辑  收藏  举报