根据说明计划,索引上的左联接失败



我正在尝试运行以下查询,并且正在连接索引字段( hdr.M_KEYID( 我仍然在解释计划中看到表访问完整. 你能让我知道我哪里出错了,以及如何改变它以使其更快吗

以下是每个表的索引

MY_H2S上的索引

M_KEY0
M_KEY1  

MY_HBS指数

M_DATE
M_KEYID
M_DATE

查询:

select 
bdy.M_DATE as M_DATE,
M_KEY0 as M_KEY0,
M_KEY1 as M_KEY1 ,
(M_B_F+M_A_F)/2  as M_PRICE,
bdy.M_DATE as M_DATE
from 
MY_H2S hdr left join MY_HBS bdy on hdr.M_KEYID = bdy.M_KEYID

解释计划 :

----------------------------------------------------------------------------------
| Id  | Operation          | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |             |   182K|    12M|   458   (1)| 00:00:06 |
|*  1 |  HASH JOIN OUTER   |             |   182K|    12M|   458   (1)| 00:00:06 |
|   2 |   TABLE ACCESS FULL| MY_H2S      |   124 |  3968 |     3   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| MY_HBS      |   182K|  7288K|   455   (1)| 00:00:06 |
----------------------------------------------------------------------------------

你能不能让mw知道我哪里出错了,以及如何比这更快

这太长了,无法发表评论。

就个人而言,我希望甲骨文将MY_HBS(M_KEYID)用于JOIN。 但是,有一些减轻情节:

  • 表格很小,(大概(适合一页。
  • 索引不包括查询(您正在选择其他列(。

优化程序正在平衡多个注意事项。 线性扫描包含 124 条记录的列表不一定比加载索引、遍历索引,然后加载(单个(数据库差。

最新更新