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

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

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

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

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

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

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

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

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

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

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

posted @   高云鹏  阅读(277)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示