问题描述
你好,
我对ORacle SQL相当陌生,并停留在某一时刻。
我正在尝试在每日事实表上运行以下update语句,并且它一直在运行。有没有办法优化下面的sql,我需要做任何预处理或添加任何idex?
还是在substr函数上使用如此长的列表中是错误的
感谢您的所有帮助!提前感谢
我对ORacle SQL相当陌生,并停留在某一时刻。
我正在尝试在每日事实表上运行以下update语句,并且它一直在运行。有没有办法优化下面的sql,我需要做任何预处理或添加任何idex?
还是在substr函数上使用如此长的列表中是错误的
UPDATE EDI_867_DLY_FACT a SET OVRD_CUST_CD = 3000, audt_upd_dt=sysdate WHERE (EDI_SNDR_ID, CUST_CD) IN (SELECT SNDR_ID, SOLD_TO FROM EDI_RULE_SNDR WHERE RULE_KEY= 1) AND SUBSTR(POC_ZIP_CD,1,3) IN ('500','501','502','503','504','505','506','507','511','513','514','515','520','522','523','524','525','526','527','528','620','622','628','630','631','633','634','635','636','640','641','644','645','647','648','650','651','652','653','654','655','656','657','658','660','661','662','665','666','667','668','670','671','672','673','674','675','676','678','679','680','681','684','685','686','687','688','689','716','717','719','720','721','722','725','726','728','740','741','743','744') AND OVRD_INV_DT='23-SEP-16'复制
感谢您的所有帮助!提前感谢
专家解答
为了帮助SQL性能,我们确实需要查看执行计划。这包含查询的详细信息。
您可以生成一个如下所示:
您可以找到其他方法来做到这一点,并在以下位置阅读有关计划的更多信息:https://blogs.oracle.com/sql/how-to-create-an-execution-plan
do i need to do any preprocessing or add any index?
索引可能会有所帮助,但我们确实需要查看解决该问题的计划。
Or is it just wrong to use such a long in-list on a substr function
列表中是一系列or的简写。一个大的列表 (可能) 意味着你正在访问更多的行,这反过来使一个索引不太有用。
Substr本身不是问题。但是通常您需要创建一个索引,该索引完全包含substr,就像您在查询中使用它一样。
在以下位置阅读有关索引的更多信息:
https://blogs.oracle.com/sql/how-to-create-and-use-indexes-in-oracle-database
您可以生成一个如下所示:
set serveroutput off update /*+ gather_plan_statistics */select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST')); 复制
您可以找到其他方法来做到这一点,并在以下位置阅读有关计划的更多信息:https://blogs.oracle.com/sql/how-to-create-an-execution-plan
do i need to do any preprocessing or add any index?
索引可能会有所帮助,但我们确实需要查看解决该问题的计划。
Or is it just wrong to use such a long in-list on a substr function
列表中是一系列or的简写。一个大的列表 (可能) 意味着你正在访问更多的行,这反过来使一个索引不太有用。
Substr本身不是问题。但是通常您需要创建一个索引,该索引完全包含substr,就像您在查询中使用它一样。
在以下位置阅读有关索引的更多信息:
https://blogs.oracle.com/sql/how-to-create-and-use-indexes-in-oracle-database
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1327次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
803次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
729次阅读
2025-03-06 09:41:49
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
470次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
366次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
318次阅读
2025-03-26 23:27:33
Oracle分区和执行计划相关的几个问题
听见风的声音
311次阅读
2025-03-07 08:51:42
数据库管理-第299期 数据库是否需要定期重启(20250306)
胖头鱼的鱼缸
254次阅读
2025-03-06 09:09:35
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
252次阅读
2025-03-19 14:41:51
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
247次阅读
2025-03-24 09:42:53