SQL Server 执行参数化脚本时的一个性能问题
今天遇到了一个莫名其妙的性能问题,一段简单的SQL语句,以用户名为查询条件。
不同的用户执行时居然速度不同,凡是用户名中带有“9”的,执行速度就慢。
匪夷所思,难道“9”是敏感词??开玩笑,肯定是程序哪里有问题。
经过检查,发现代码中添加查询参数时,只声明了参数名称,而没有指定参数类型。如下:
new SqlParameter("@XXX", "用户名");
代码跟踪到这里,发现这样生成的参数对象的数据类型是NVarChar,而数据库中的用户名字段类型是VarChar。
就差这么一点点,结果导致用户名中带有“9”的用户的查询速度明显降低。
这个“9”为什么会慢,还没搞清楚,但是改正的方法已经明确了。
在实例化参数对象时指定数据类型是VarChar就可以了,这下查询速度就上来了。
一时马虎,居然就出现了效率问题,看来码农搬砖也是需要走走脑子的……