同样功能的SQL语句,写成参数和写成常量的差别
http://tech.ddvip.com 2008年09月09日 社区交流
本文详细介绍同样功能的SQL语句,写成参数和写成常量的差别
今天写一个存储过程,由于执行的时间比较长(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语句,执行效率相差那么大拉?
来源:blog.csdn 作者:深蓝居 责编:豆豆技术应用
- SQL Server 2008 教程
- SQL Server 2005 教程
- SQL Server 安全设置
- SQL Server 故障解决
- SQL Server 安装配置
- SQL Server 备份恢复
- SQL Server 性能调优
- SQL Server 存储过程
- SQL Server 函数
- SQL Server 事务
- SQL Server 查询
- SQL Server 索引
- SQL Server 入门教程
- SQL Server 数据类型
- SQL Server 数据库表
- SQL Server T-SQL
- SQL Server 语句
- SQL Server 死锁
- SQL Server 加密
- SQL Server 数据库连接
- SQL Server 数据仓库
- SQL Server 数据库管理
- 更多SQL Server 专题>>>