oracle in查询可以用list,学习猿地-oracle查询转换_inlist转换

本文介绍了Oracle查询优化中的IN查询转换,特别是如何将IN查询转换为INLIST迭代器,通过调整optimizer_index_caching参数减少逻辑读,提高查询效率。文中通过创建测试表和数据,展示了不同执行计划的对比,并讲解了使用SQL提示和profiles固定执行计划的方法。
摘要由CSDN通过智能技术生成

oracle的optimizer会对一些sql语句进行查询转换,比如:合并视图

子查询非嵌套化

inlist转换

下面讲讲遇到的in list转化优化的案例:

69c5a8ac3fa60e0848d784a6dd461da6.jpgcreate tabletest(

col1varchar2(12)

col2numberextvarchar2(4000)

);create index test_ind on test(user_id, col2);create sequence seq_test cache 200;

69c5a8ac3fa60e0848d784a6dd461da6.jpg

第一步:准备一些测试数据(10个线程随机的插入数据):

69c5a8ac3fa60e0848d784a6dd461da6.jpg#!/bin/shfor((i=1;i<=$1;i++))

do/home/oracle/insert.sh &done

#######################################################

#!/bin/sh

./home/oracle/.bash_profile

sqlplus-S /nolog<

conn test/ali88declaretype arraylistis table of varchar2(20byte);

arr_user arraylist;

rannumber;beginarr_user := arraylist();arr_user.extend(3);arr_user(1):=‘xpchild001‘;

arr_user(2):=‘xpchild002‘;arr_user(3):=‘xpchild003‘;

ran :=dbms_random.value(1,3);while(1>0) loopinsert into test(col1,col2,ext)values(arr_user(ran),seq_test.nextval,dbms_random.string(‘|‘, 300));commit;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值