暂无图片
oracle 索引
我来答
分享
寨寨🍒
2021-11-03
oracle 索引

insert /*+parallel (m,32)*/ into  tbp_transaction_ia m  select /*+parallel(a,32)*/ * from tbp_transaction a where lase_upt_dt>=to_date('20210930 00:00:00','YYYYMMDD HH24:MI:SS') and last_upd_dt <=to_date('20210930 23:59:59','YYYYMMDD HH24:MI:SS') ;

上面语句查询执行计划,未走索引,显示的是全表扫描,tbp_transaction  是range--hash 组合分区,lase_upt_dt 是索引列,类型是datetime。

请教各位大师,该如何优化呢

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
薛晓刚

 select * from tbp_transaction a where lase_upt_dt>=to_date('20210930 00:00:00','YYYYMMDD HH24:MI:SS') and last_upd_dt <=to_date('20210930 23:59:59','YYYYMMDD HH24:MI:SS') ;

这样写用到了吗?

如果用到了改写成


insert into  tbp_transaction_ia m  select  * from tbp_transaction a where lase_upt_dt>=to_date('20210930 00:00:00','YYYYMMDD HH24:MI:SS') and last_upd_dt <=to_date('20210930 23:59:59','YYYYMMDD HH24:MI:SS') ;

暂无图片 评论
暂无图片 有用 0
打赏 0
寨寨🍒
题主
2021-11-03
老师您的意思是并行影响了索引是不 那到底是开并行快还是索引快呀
DarkAthena

全局索引和分区索引有区别,如果你的索引是全局索引,然后你又加了并行,CBO判断走分区扫描更合适,就不会用索引了,全局索引想要不走分区扫描,那你就把sql中的并行去掉。

对于分区表,并行和索引想一起用的话,索引应该建成分区索引。

而且不一定走索引就比全表扫描快,索引更多情况是找行而不是找块,主要是看要检索的数据量及集中性,如果你这个数据量比较大,应该要用这个时间栏位作为分区字段,这样就能快速定位分区进行复制

暂无图片 评论
暂无图片 有用 0
打赏 0
寨寨🍒
题主
2021-11-03
那如果不是分区表,加了并行,查询的时候索引会失效么?
寨寨🍒
题主
2021-11-03
谢谢老师 我刚验证了 加并行不影响TABLE类型表的索引。
回答交流
Markdown


请输入正文
提交
相关推荐
oracle 12cR2之后安装grid是不是必须要部署asm了
回答 1
不是比需的,nfs、nas等共享存储都可以。StorageOptionOCRandVotingFilesOracleClusterwarebinariesOracleRACbinariesOracle
Oracle应该优化哪些查询?
回答 2
已采纳
V$SQLAREA和V$SQL是很有用的视图,可以使用它们来查找性能糟糕的需要优化的SQL语句。diskreads列的值显示了系统中执行的磁盘读的次数。将这个值除以执行次数(diskreads/exe
oracle3个过亿的父子大表如何分区
回答 1
1、父子表的分区,可以考虑使用引用分区。引用分区表是Oracle11g引入的新特性,解决了“并非所有子表都具有父表的分区列”这个问题。采用引用分区,子表会继承父表的分区机制。是通过PARTITIONB
Oracle如何对impdp/expdp 操作做审计?
回答 1
已采纳
参考下这个,看是否复合要求。
Oracle EMCC可以独立安装吗?还是必须安装到数据库服务器上?
回答 1
https://www.modb.pro/db/66272希望对你有所帮助
关于oracle打了psu之后执行脚本的疑惑
回答 2
已采纳
1,@catbundle.sqlpsuapply2,@utlrp.sql要执行3,@dbmsjdev.sql4,execdbmsjavadev.disable根据自身需要,如果你要打p31668908
归档问题:设置归档目录出现报错ORA-02097和ORA-16019
回答 1
查看LOGARCHIVEDEST或LOGARCHIVEDUPLEXDEST是否存在值,如果需要使用“LOGARCHIVEDESTn”时,就不能使用上述两个值。可以进行reset,然后再进行使用。
数据作除法运算,结果保留12位SQL如何实现
回答 4
已采纳
selecttrunc(222.123456789101112,11length(trunc(222.123456789101112)))fromdual;把我语句中的数字换成你的计算结果,其他的你应
openldap的部署有的要求先安装Oracle数据库kerxxx DB,有的却直接安装openlad,是因为默认会带数据库吗?
回答 1
通过命令yumdeplistopenldap查看openldap的依赖,可以发现并不需要安装KerxxxDB。另外,确实是默认带一个数据库,https://www.openldap.org/doc/a
大量数据更新操作
回答 5
好的,谢谢两位老师,写了一个merge写了一个LOOP循环,看看执行结果,能不能执行出来吧。谢谢了。