同样功能的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 ,所以写了如下这样的代码:
select  ACC_SEGMENT
from  dbo.mis_gl_balance
where   LEFT (ACC_SEGMENT, 22 IN  ( SELECT   ' 3810.105301. ' + mis_code
FROM          finance_budget_account
WHERE      budget_type  =   ' 电路租费 ' )
以上SQL语句就是把某种电路租费的ACC_SEGMENT全部取出来了.执行效率还能够接收,1秒钟就完成了.
但是如果改成了如下的代码:
DECLARE   @mis_company_code   char ( 4 )
SET   @mis_company_code = ' 3810 '
select  ACC_SEGMENT
from  dbo.mis_gl_balance
where   LEFT (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.cnblogs.com/studyzy/archive/2007/08/31/877523.html,如需转载请自行联系原作者

相关文章
|
SQL 关系型数据库 RDS
为什么同样的Sql语句在SqlServer RDS 查询得到的和自己本机SqlServer 查询的不一样呢?
为什么同样的Sql语句在SqlServer RDS 查询得到的和自己本机SqlServer 查询的不一样呢?
131 0
为什么同样的Sql语句在SqlServer RDS 查询得到的和自己本机SqlServer 查询的不一样呢?
|
SQL NoSQL 数据可视化
同样是查询语言,它和 SQL 竟然有这么多不同
这篇文章将介绍图数据库 Nebula Graph 的查询语言 nGQL 和 SQL 的区别。
339 0
|
SQL 存储 数据库
浅析SQL查询语句未显式指定排序方式,无法保证同样的查询每次排序结果都一致的原因
原文:浅析SQL查询语句未显式指定排序方式,无法保证同样的查询每次排序结果都一致的原因    本文出处:http://www.cnblogs.com/wy123/p/6189100.html        标题有点拗口,来源于一个开发人员遇到的实际问题  先抛出问题:一个查询没有明确指定排序方式,那么,第二次执行这个同样的查询的时候,查询结果会不会与第一次的查询结果排序方式完全一样?  答案是不确定的,两个完全一样的查询,结果也完全一样,两次(多次)查询结果的排序方式有可能一致,有可能不一致。
1681 0
|
SQL 索引 关系型数据库
执行时间在1秒以下的SQL同样也会引发性能问题
某客户的操作人员反应很慢不能操作,管理人员登录小机系统后发现CPU使用到了95%以上。而且这种情况持续了几个月。小机是IBM的P520,配置是2颗4核的CPU,内存是48G,Oracle是10.2.0.5。
811 0
|
SQL 应用服务中间件 API
同样的sql执行结果不同的原因分析
今天开发的同事问我一个问题,说有一个sql语句,在weblogic的日志中执行没有结果,但是手动拷贝数据到客户端执行,却能够查到。这种奇怪的问题一下子就能引起我的好奇心,从我知道的原因来看啊,可能是存在不可见字符造成的。
909 0
|
11天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
21天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
11天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
74 6

热门文章

最新文章