问题描述
嗨,汤姆,
我有以下查询
当我得到解释计划,我得到下面的信息,所以我的问题是如何决定我应该索引哪个列,以及如何创建索引 (单列或多列的索引)。
计划哈希值: 1823763723
问候
我有以下查询
select a.order_number from xxdm.XXARX_INV_SOURCE_TBL_28_jan1 a,XXARX_INV_CNV_TBL_28th_jan1 b where a.trx_number = b.trx_number and a.customer_number_source = b.customer_number_source and a.trx_number = :trx_number and a.creation_date > sysdate-1;复制
当我得到解释计划,我得到下面的信息,所以我的问题是如何决定我应该索引哪个列,以及如何创建索引 (单列或多列的索引)。
计划哈希值: 1823763723
--------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 41378 | 2384K| 2431 (1)| 00:00:01 | |* 1 | HASH JOIN | | 41378 | 2384K| 2431 (1)| 00:00:01 | |* 2 | TABLE ACCESS FULL| XXARX_INV_CNV_TBL_28TH_JAN1 | 31764 | 527K| 1641 (1)| 00:00:01 | |* 3 | TABLE ACCESS FULL| XXARX_INV_SOURCE_TBL_28_JAN1 | 41670 | 1709K| 789 (2)| 00:00:01 | --------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("A"."TRX_NUMBER"="B"."TRX_NUMBER" AND "A"."CUSTOMER_NUMBER_SOURCE"="B"."CUSTOMER_NUMBER_SOURCE") 2 - filter("B"."TRX_NUMBER" IS NOT NULL AND "B"."CUSTOMER_NUMBER_SOURCE" IS NOT NULL) 3 - filter("A"."CREATION_DATE">SYSDATE@!-1 AND "A"."TRX_NUMBER" IS NOT NULL) Note ----- - dynamic statistics used: dynamic sampling (level=2) - 1 Sql Plan Directive used for this statement复制
问候
专家解答
这就是我要处理的方式。
当我看:
和a.trx_number = :trx_number
和a.creation_date> sysdate-1;
我会考虑的事情是 (只有 * 您 * 才能真正回答这些问题,因为我没有数据):
-我有多少个不同的trx_number值?这有助于我决定将此列放在索引中是否有任何真正的好处
-从列的名称来看,它们听起来像是固定的 (即,不会随着时间的推移而更新),因此索引可能只会影响insert,而不会影响后续更新。
-creation_date的数据分布是什么?* 所有 * 值是否超过sysdate-1?(因为表的名称表明它可能只是每日摘录)。多少百分比的行落入这个桶。
在 * 缺少 * 该信息的情况下,我无法真正给出明智的答案,但我倾向于尝试类似的方法:
在t上创建索引ix (trx_number,creation_date) 压缩1;
当我看:
和a.trx_number = :trx_number
和a.creation_date> sysdate-1;
我会考虑的事情是 (只有 * 您 * 才能真正回答这些问题,因为我没有数据):
-我有多少个不同的trx_number值?这有助于我决定将此列放在索引中是否有任何真正的好处
-从列的名称来看,它们听起来像是固定的 (即,不会随着时间的推移而更新),因此索引可能只会影响insert,而不会影响后续更新。
-creation_date的数据分布是什么?* 所有 * 值是否超过sysdate-1?(因为表的名称表明它可能只是每日摘录)。多少百分比的行落入这个桶。
在 * 缺少 * 该信息的情况下,我无法真正给出明智的答案,但我倾向于尝试类似的方法:
在t上创建索引ix (trx_number,creation_date) 压缩1;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
531次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
501次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
412次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
411次阅读
2025-04-08 09:12:48
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
394次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
392次阅读
2025-04-01 11:08:44
Oracle 19c RAC更换IP实战,运维必看!
szrsu
353次阅读
2025-04-08 23:57:08
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
349次阅读
2025-04-20 10:07:02
oracle定时任务常用攻略
virvle
321次阅读
2025-03-25 16:05:19
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
320次阅读
2025-04-15 14:48:05