性能攸关的sql语句参数化

本文讲述了SQL参数化在提升性能的同时,也可能因不当使用而导致性能下降。特别是参数类型不匹配时,如误将DbType.String用于应为VarChar的字段,可能会使原本快速的查询变得异常缓慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数化大家都知道,可以防止注入功能,可以减少数据库编译时间,提高性能,可是,如果参数化出现了问题,对性能的影响大家可能也不太注意。对于大型系统或者非常频繁操作的语句,可就不一样了,如果一个语句执行1s和10ms,可能没有什么大的感觉,但是如果这句话是你的业务系统非常频繁的语句,那么就会影响你整个系统的性能了。

我遇到过好几次性能问题,都是参数化的问题:参数化的时候,参数必须正确 ,否则性能比不用参数化还要严重。比如你在写dotnet程序,做了一个数据库访问的,适用了参数化的方式,其中一个参数你给了DbType.String类型,这就麻烦了,因为这个字段在数据库里面可能是一个varchar,而不是Nvarchar,而这个 DbType.String会将这个参数作为Nvarchar处理,这样的话,数据库里在做这句话的时候性能会很差了,我们的一个实际系统,一个非常简单的update语句会用到2s多。讲他修改为SqlDbType.VarChar以后,再用profiler去抓,显示的时间变成了0。

这么一个小小的问题,对大系统来讲,性能的影响是非常大的,所以,千万不要小看了sql参数化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值