SQL Server 执行参数化脚本时的一个性能问题
今天遇到了一个莫名其妙的性能问题,一段简单的SQL语句,以用户名为查询条件。
不同的用户执行时居然速度不同,凡是用户名中带有“9”的,执行速度就慢。
匪夷所思,难道“9”是敏感词??开玩笑,肯定是程序哪里有问题。
经过检查,发现代码中添加查询参数时,只声明了参数名称,而没有指定参数类型。如下:
new SqlParameter("@XXX", "用户名");
代码跟踪到这里,发现这样生成的参数对象的数据类型是NVarChar,而数据库中的用户名字段类型是VarChar。
就差这么一点点,结果导致用户名中带有“9”的用户的查询速度明显降低。
这个“9”为什么会慢,还没搞清楚,但是改正的方法已经明确了。
在实例化参数对象时指定数据类型是VarChar就可以了,这下查询速度就上来了。
一时马虎,居然就出现了效率问题,看来码农搬砖也是需要走走脑子的……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端