sql语句分析时间远大于执行时间使用绑定变量

本文探讨了在OLTP环境中使用绑定变量的重要性,通过对比不同SQL查询的执行计划,阐述了绑定变量如何有效降低响应时间,特别是对于返回较大结果集的查询。文章还详细解释了OLTP环境下SQL查询执行过程中的分析时间和执行时间差异,并强调了绑定变量在此场景下的合适应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当执行如下语句时,优化器选择全表扫描:
hao@TEST> select count(pad) from t where id < 990;

COUNT(PAD)
----------
       989


Execution Plan
----------------------------------------------------------
Plan hash value: 1842905362

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |    42 |     3   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE    |      |     1 |    42 |            |          |
|*  2 |   TABLE ACCESS FULL| T    |   989 | 41538 |     3   (0)| 00:00:01 |

hao@TEST> var n number
hao@TEST> execute :n := 990;

PL/SQL procedure successfully completed.

hao@TEST> select count(pad) from t where id < :n;

COUNT(PAD)
----------
       989


Execution Plan
----------------------------------------------------------
Plan hash value: 2536185945

-------------------------------------------------------------------------------------
| Id  | Operation                    | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |      |     1 |    42 |     2   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE              |      |     1 |    42 |            |          |
|   2 |   TABLE ACCESS BY INDEX ROWID| T    |    50 |  2100 |     2   (0)| 00:00:01 |
|*  3 |    INDEX RANGE SCAN          | T_ID |     9 |       |     2   (0)| 00:00:01 |
一般来说,OLTP环境中适合使用绑定变量,因为系统中的sql大部分是返回结果集较小的或者是插入语句等等,这类语句执行时间一般小于分析时间,时间花费主要在分析上,如果使用绑定变量,可以有效的降低response time。而对于返回结果集较大的sql语句,那么它的分析时间远小于执行时间,在这个时候使用绑定变量不太适合,更有可能导致错误的执行计划而使系统崩溃。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22253646/viewspace-667336/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22253646/viewspace-667336/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值