gpt4 book ai didi

performance - "TABLE ACCESS BY INDEX ROWID"是否意味着优化器使用索引或表?

转载 作者:行者123 更新时间:2023-12-03 14:59:24 31 4
gpt4 key购买 nike

I have query that join two very big tables and ran explain plan on that it showing like this..



----------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 31 | 7 (0)| 00:00:01 |
| 1 | PX COORDINATOR | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10000 | | | | |
| 3 | NESTED LOOPS | | | | | |
| 4 | NESTED LOOPS | | 1 | 31 | 7 (0)| 00:00:01 |
| 5 | PX PARTITION HASH ALL | | 1 | 17 | 5 (0)| 00:00:01 |
| 6 | TABLE ACCESS BY INDEX ROWID| Tab1 | 1 | 17 | 5 (0)| 00:00:01 |
|* 7 | INDEX RANGE SCAN | Tab1_PK | 1 | | 4 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | tab2_PK | 1 | | 1 (0)| 00:00:01 |
|* 9 | TABLE ACCESS BY INDEX ROWID | Tab2 | 1 | 14 | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------


Query:

select t2.colC,t2,colD,t1.colX
from tab2 t2
join tab1 t1 on t2.colA=t1.colA
and t1.colB=2345
and t2.colC in (123,456,789);
TABLE ACCESS BY INDEX ROWID 是否意味着优化器正在访问索引或扫描表中的 rowid 以获取 rowids

目前 Query 将在几秒钟内完成。但是在计划中说它不使用任何索引,两个表都有适当的索引。

最佳答案

TABLE ACCESS BY INDEX ROWID意味着 Oracle 内核正在检查您的索引,并且知道并非所有需要的信息都包含在索引中(需要的列不在此索引中)。因此它需要指向实际表数据(rowid)的指针并查找它。

在这种情况下,使事情运行得更快的流行技巧是包括(非唯一)索引中缺少的列。它以更大的索引为代价避免了在表中的一次查找。

关于performance - "TABLE ACCESS BY INDEX ROWID"是否意味着优化器使用索引或表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462886/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com