Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

51

积分

0

好友

20

主题
1#
发表于 2012-4-17 10:51:04 | 查看: 3635| 回复: 1
Oracle9i Enterprise Edition Release 9.2.0.8.0


sql :
select a.group_id,
       a.plan_id,
       a.service_id,
       b.plan_id,
       b.service_id,
       a.acct_id,
       b.serv_id
  from zc.kpi_group_order a, zc.kpi_group_user_order b
where a.region_code = 771
   and b.region_code = 771
   and a.group_id = b.group_id
   and b.serv_id =2038747932
   and a.service_id = b.service_id
   and a.service_id = 912
   and b.plan_id = 80001201
   and a.plan_id = b.plan_id;




------------------------------------------------------------------------------------------------
| Id  | Operation                    |  Name                           | Rows  | Bytes | Cost  |
------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |                                 |     1 |    56 |  1448 |
|   1 |  NESTED LOOPS                |                                 |     1 |    56 |  1448 |
|*  2 |   TABLE ACCESS BY INDEX ROWID| KPI_GROUP_ORDER                 |   193 |  5404 |  1062 |
|   3 |    AND-EQUAL                 |                                 |       |       |       |
|*  4 |     INDEX RANGE SCAN         | IDX_GROUP_ORDER_PLAN_ID         |   193 |       |   413 |
|*  5 |     INDEX RANGE SCAN         | IDX_KPI_GROUP_ORDER_SERVICE_ID  |   193 |       |   413 |
|*  6 |     INDEX RANGE SCAN         | IDX_GROUP_ORDER_REGION_CODE     |   193 |       |   413 |
|*  7 |   INDEX RANGE SCAN           | IDX_KPI_GROUP_USER_ORDER_5      |     1 |    28 |     2 |
------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - filter("A"."REGION_CODE"=771 AND "A"."SERVICE_ID"=912 AND "A"."PLAN_ID"=80001201)
   4 - access("A"."PLAN_ID"=80001201)
   5 - access("A"."SERVICE_ID"=912)
   6 - access("A"."REGION_CODE"=771)
   7 - access("B"."REGION_CODE"=771 AND "A"."GROUP_ID"="B"."GROUP_ID" AND
              "B"."SERV_ID"=2038747932 AND "B"."PLAN_ID"=80001201 AND "B"."SERVICE_ID"=912)

Note: cpu costing is off


执行计划走AND-EQUAL ???
2#
发表于 2012-4-17 10:57:53
• AND-EQUAL
– Retrieves ROWIDs from two or more indexes
– Returns the ROWIDs which occur in all indexes


The WHERE predicates will be worked on from bottom to top, but this will only come
into effect if an AND-EQUAL operation can use more than five indexes. In this case,
the bottom five predicates are used for selecting the five indexes for the AND-EQUAL
operation.


使用索引较多的情况下会采用AND-EQUAL 操作, 该操作 输入 多于2个索引的rowid, 返回 所有index索引中都存在的rowid,相当于对 从index 得到的 rowid 做了 与 AND操作

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-24 09:34 , Processed in 0.046433 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569