绑定变量窥探和直方图

本文详细介绍了Oracle数据库中绑定变量的窥探机制,通过案例展示了当数据变化时,即使数据量增加,仍按照最初的执行计划运行SQL的情况。同时,讨论了直方图的作用,包括频率直方图和高度平衡直方图,并说明了如何收集直方图。最后,探讨了绑定变量窥探与直方图的相互作用,指出在不使用绑定变量的情况下,依据直方图可以得到更好的执行计划。

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

  一、绑定变量的窥探(peek)
1、Oracle在处理带有绑定变量的SQL时候,只会在硬解析的时候才会“窥探”一下SQL中绑定变量的值,然后会根据窥探到的值来决定整个SQL的执行计划。参数:

_optim_peek_user_binds


2、绑定变量窥探的案例

create table t8(id int ,name varchar2(100));

begin
  for i in 1 .. 1000 loop
    insert into t8 values (i, 'a' || i);
  end loop;
end;


   create index t_idx on t8(id);


   exec dbms_stats.gather_table_stats(user,'T8',cascade=>true);

 select id,count(*) from t8 group by id;

   variable n number;
   exec :n := 1;
   select count(*) from t8  where id = :n;
   select * from table(dbms_xplan.display_cursor);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID	7zy48bjbwdjff, child number 0
-------------------------------------
select 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值