sql 性能

sql性能从低到高:

1, 代码里面拼接sql

2,调用存储过程

3,参数话SQL

4,搭建数据调用平台: 合并一些相同或者o合的数据; 后台数据对开发人员黑盒, 开发人员只需要知道调用的接口,不需要知道具体的表, 专心写自己的code


不要再使用拼接sql的方式,使用参数化sql的方式。

 

Database db;

           DbCommand dbCommand;

           db = DatabaseFactory.CreateDatabase(StrConnUserDB);

           StringBuilder builder = new StringBuilder("select top ");

           builder.Append(top);

           builder.Append(" hotel_id, count(1) as countN ");

           builder.Append(" from memberHotel with(nolock) ");

 

           if (cityCondition == string.Empty)

           {

               builder.Append(" where 1=0 ");

           }

           else

           {

               builder.Append(" where hotel_id in (");

               builder.Append(cityCondition);

               builder.Append(") ");

           }

           builder.Append(" group by hotel_id ");

           builder.Append(" order by count(1) Desc ");


之前的老代码或sp代码可能存在一些inxxxx)的列表查询,而in的参数本身是动态产生的,这种代码在以前访问量不是主要瓶颈的时候还不是很突出,但是目前数据量和性能要求越来越高的今天,已经不合时宜了。

因此如果各位同事以后在看到这种类似的 sql 拼接代码时,顺手为之优化一下吧



外部传来的一个列表,如订单列表,酒店列表等,要从数据库一次返回这些订单列表或酒店列表的相关信息。大部分情况下开发人员都是通过拼接sql解决的。拼接sql所带来的问题是,每次sql进来对于db来说都是不一样的,无法重用之前的执行计划,导致性能低下(有些数据库如sqlserver会智能的做cache,但是很不可靠)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值