同样功能的SQL数据库语句,写成参数和写成常量的差别_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

同样功能的SQL语句,写成参数和写成常量的差别

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:参数差别语句功能
黑客防线网安网讯:  今天写一个存储过程,由于执行的时间比较长(7秒)所以打算优化一下.结果在优化测试代码中发现如下一个奇怪的现象.  现在有一个表mis_gl_balance,其中有一个字段ACC_SEGMENT VARCHAR(181...

  今天写一个存储过程,由于执行的时间比较长(7秒)所以打算优化一下.结果在优化测试代码中发现如下一个奇怪的现象.

  现在有一个表mis_gl_balance,其中有一个字段ACC_SEGMENT VARCHAR(181) NULL ,他的内容的形式如下:

  3810.105301.5414070180.000000.00000000.0000.000000

  另外一个表finance_budget_account 主要记录了budget_type 预算类型和mis_code MIS系统编码.这里的MIS编码就是ACC_SEGMENT表中的第三段.

  为了查询出某种预算类型的所有ACC_SEGMENT ,所以写了如下这样的代码:

  selectACC_SEGMENT
  fromdbo.mis_gl_balance
  whereLEFT(ACC_SEGMENT,22)IN(SELECT'3810.105301.'+mis_code
  FROM    finance_budget_account
  WHERE  budget_type='电路租费')

  以上SQL语句就是把某种电路租费的ACC_SEGMENT全部取出来了.执行效率还能够接收,1秒钟就完成了.

  但是如果改成了如下的代码:

  DECLARE@mis_company_codechar(4)
  SET@mis_company_code='3810'
  selectACC_SEGMENT
  fromdbo.mis_gl_balance
  whereLEFT(ACC_SEGMENT,22)IN(SELECT  @mis_company_code+'.105301.'+mis_code
  FROM    finance_budget_account
  WHERE  (budget_type='电路租费'))

  比较这两段SQL.我们只是将其中的一个字符串'3810'写成了参数的形式,但是执行的效率就完全不一样了.

  第二种SQL语句花费了7秒钟的时间.

  为什么同样的SQL语句,执行效率相差那么大拉? 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-10222-1.html
网站维护教程更新时间:2012-03-21 02:30:58  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer