- 最后登录
- 2012-8-6
- 在线时间
- 24 小时
- 威望
- 89
- 金钱
- 734
- 注册时间
- 2012-2-29
- 阅读权限
- 50
- 帖子
- 37
- 精华
- 2
- 积分
- 89
- UID
- 267
|
1#
发表于 2012-7-3 09:29:03
|
查看: 6883 |
回复: 17
生产系统有一个表:ZZCD1,有很多这样的查询:
SELECT MAX( "ZNO" ) FROM "ZZCD1" WHERE "MANDT" = :A0 AND "EBELN" = :A1
该表有一个PK索引:ZZCD1~1:MANDT,ZNO,EBELN,EBELP
其中MANDT只有,100,800,900这些类型的值(没办法。。。SAP系统就这样)。
在生产系统该SQL的执行计划为:
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT REMOTE| | 1 | 26 | 2635 (1)| 00:00:32 | |
| 1 | SORT AGGREGATE | | 1 | 26 | | | |
|* 2 | INDEX RANGE SCAN | ZZCD1~0 | 9 | 234 | 2635 (1)| 00:00:32 | LEP |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("MANDT"=:A0 AND "EBELN"=:A1)
filter("EBELN"=:A1)
Note
-----
- fully remote statement
接下来尝试优化,尝试将其变为:INDEX RANGE SCAN (MIN/MAX)的访问路径。
于是将表expdp出来impdp到了另外一个系统,啥都没做,相同的sql语句执行计划却不同了:
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT REMOTE | | 1 | 26 | 3 (0)| 00:00:01 | |
| 1 | SORT AGGREGATE | | 1 | 26 | | | |
| 2 | FIRST ROW | | 151 | 3926 | 3 (0)| 00:00:01 | |
|* 3 | INDEX RANGE SCAN (MIN/MAX)| ZZCD1~0 | 151 | 3926 | 3 (0)| 00:00:01 | TEST |
-------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("MANDT"=:A0)
filter("EBELN"=:A1)
Note
-----
- fully remote statement
这个就是预期想要的执行计划,但是在生产库死活出不来,重新统计了表,重组了索引,执行计划仍然没有改变。
请教这个是怎么回事啊,还有哪方面的因素在其中影响,谢谢~! |
|