性能攸关的sql语句参数化

来源:互联网 发布:淘宝上的矫正器有用吗 编辑:程序博客网 时间:2024/05/23 01:18

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

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

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

原创粉丝点击