执行计划突变导致的SQL慢

相同环境下同一条update语句,慢的时候执行了1.5天,快的时候2个小时就执行完了,通过执行@awrsqrpt.sql脚本抓取当时的执行计划,发现有如下不同:

慢的情况下的执行计划:

Id Operation Name Rows Bytes Cost (%CPU) Time
0 UPDATE STATEMENT       8 (100)  
1    UPDATE ZJWB_ANJIANZT        
2      NESTED LOOPS          
3        NESTED LOOPS   1 61 8 (13) 00:00:01
4          VIEW VW_NSO_1 1 27 5 (20) 00:00:01
5            SORT UNIQUE   1 30 5 (20) 00:00:01
6              SORT GROUP BY   1 30 5 (20) 00:00:01
7                TABLE ACCESS BY INDEX ROWID ZJWB_ANJIANZT 1 30 4 (0) 00:00:01
8                  INDEX RANGE SCAN IX_CHULIBJ_ZJWB_ANJIANZT 1   3 (0) 00:00:01
9          INDEX RANGE SCAN IX_CHULIBJ_ZJWB_ANJIANZT 1   2 (0) 00:00:01
10        TABLE ACCESS BY INDEX ROWID ZJWB_ANJIANZT 1 34 3 (0) 00:00:01

快的时候的执行计划:

Id Operation Name Rows Bytes TempSpc Cost (%CPU) Time
0 UPDATE STATEMENT         147K(100)  
1    UPDATE ZJWB_ANJIANZT          
2      HASH JOIN   12G 699G 39M 147K (83) 00:29:27
3        VIEW VW_NSO_1 1053K 27M   14580 (3) 00:02:55
4          SORT UNIQUE   1053K 27M   14580 (3) 00:02:55
5            SORT GROUP BY   1053K 27M 81M 14580 (3) 00:02:55
6              TABLE ACCESS FULL ZJWB_ANJIANZT 1062K 27M   6492 (3) 00:01:18
7        TABLE ACCESS FULL ZJWB_ANJIANZT 1150K 38M   6494 (3) 00:01:18

并不是所有的表创建了索引就一定快,如果表上某个列的值唯一性比较强,创建索引比较好,但是如果重复性比较高的话,不适合创建索引。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10322123/viewspace-611954/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10322123/viewspace-611954/

你可能感兴趣的:(执行计划突变导致的SQL慢)