SQL Server 执行参数化脚本时的一个性能问题

今天遇到了一个莫名其妙的性能问题,一段简单的SQL语句,以用户名为查询条件。

不同的用户执行时居然速度不同,凡是用户名中带有“9”的,执行速度就慢。

匪夷所思,难道“9”是敏感词??开玩笑,肯定是程序哪里有问题。

经过检查,发现代码中添加查询参数时,只声明了参数名称,而没有指定参数类型。如下:

new SqlParameter("@XXX", "用户名");

代码跟踪到这里,发现这样生成的参数对象的数据类型是NVarChar,而数据库中的用户名字段类型是VarChar。

就差这么一点点,结果导致用户名中带有“9”的用户的查询速度明显降低。

这个“9”为什么会慢,还没搞清楚,但是改正的方法已经明确了。

在实例化参数对象时指定数据类型是VarChar就可以了,这下查询速度就上来了。

一时马虎,居然就出现了效率问题,看来码农搬砖也是需要走走脑子的……

posted @ 2013-01-15 16:03  高云鹏  阅读(269)  评论(0编辑  收藏  举报