sql本身没有问题,因为这是应用程序嵌套的一个sql语句,一直用着没问题,最近才出现问题。
这个sql语句如果使用 aab001 的单键索引,不使用 pk_ac13主键索引的话,查询非常快,不不会出现 笛卡尔积的合并。
这个问题已经解决了,怀疑是histogram的问题,因为我只收集了列的基本信息,不收集histogram信息,查询就可以了。
谢谢大家回帖。附上解决之后的执行计划
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 1808 (100)| |
| 1 | SORT GROUP BY | | 1 | 167 | 1808 (1)| 00:00:22 |
| 2 | NESTED LOOPS | | 1 | 167 | 1807 (1)| 00:00:22 |
| 3 | NESTED LOOPS ANTI | | 1 | 134 | 1804 (1)| 00:00:22 |
| 4 | NESTED LOOPS | | 1 | 115 | 1802 (1)| 00:00:22 |
| 5 | NESTED LOOPS SEMI | | 1 | 56 | 5 (0)| 00:00:01 |
|* 6 | TABLE ACCESS BY INDEX ROWID| AB01 | 1 | 37 | 3 (0)| 00:00:01 |
|* 7 | INDEX RANGE SCAN | PK_AB01 | 1 | | 2 (0)| 00:00:01 |
|* 8 | TABLE ACCESS BY INDEX ROWID| AB02 | 1 | 19 | 2 (0)| 00:00:01 |
|* 9 | INDEX RANGE SCAN | PK_AB02 | 1 | | 1 (0)| 00:00:01 |
|* 10 | TABLE ACCESS BY INDEX ROWID | AC13 | 8 | 472 | 1797 (1)| 00:00:22 |
|* 11 | INDEX RANGE SCAN | I_AC13_AAB001 | 50424 | | 218 (1)| 00:00:03 |
|* 12 | TABLE ACCESS BY INDEX ROWID | AC10 | 48882 | 906K| 2 (0)| 00:00:01 |
|* 13 | INDEX RANGE SCAN | IDX_AC10_BAB221 | 1 | | 1 (0)| 00:00:01 |
|* 14 | INDEX RANGE SCAN | PK_AB15 | 1 | 33 | 3 (0)| 00:00:01 |