优化SQL一条

   昨天大半夜接到一条SQL,反应说很慢,我非常愤怒,经过询问,三个月才需要跑这个SQL一次,你tm非要在马上法定节假日了 跑它吗?

  SQL如下(巨长无比)

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251

select * from table(dbms_xplan.display_cursor(lower('0ah5a8dbk28fh')));
 
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID  0ah5a8dbk28fh, child number 0
-------------------------------------
INSERT INTO END_TRANS_ACCOUNT( BRANCH_NO ,COST_CENTER ,CNTR_NO ,IPSN_NO
,POL_CODE ,ACCOUNT_NO ,I_INFO_GROUP_FLAG ,SG_NO ,CURRENCY_CODE
,VALID_DATE ,CNTR_STAT ,INVALID_DATE ,ENDORSE_STAT ,REDUCE_START_DATE
,GROUP_FLAG ,SET_STAT ,FREEZE_STAT ,DEAD_DATE ,DEAD_CODE ,MED_DATE
,ADJ_STOP_CAUSE ,ADJ_STOP_DATE ,DUTY_STOP_DATE ,IPSN_AGE ,IPSN_SEX
,IPSN_NUM ,I_INFO_PAY_ITRVL ,I_INFO_PAY_DUR ,I_INFO_PREM
,I_INFO_INSUR_DUR ,FACE_AMNT ,EXPIRY_AMNT ,SUM_ASS_AMNT ,FEE_ITRVL
,REV_GRNT ,REV_GRNT_RATE ,RIDER_INFO ,RIDER1_CNTR_NO ,RIDER2_CNTR_NO
,RIDER3_CNTR_NO ,RIDER1_SA ,RIDER2_SA ,ACCOUNT_V_B ,ACCOUNT_V_E
,BONUS_RATIO ,CLAIM_FLAG ,PREM_PAID_NUM ,LAST_PREM_DATE ,LAST_PREM
,YEAR_PREM_SG ,YEAR_PREM_RG ,FTP_PREM ,SUM_PREM ,OCC_AMNT ,PALBD_AMNT
,FEE_INCOME ,FEE_INCOME_TOTAL ,BONUS_PERSISTENCY
,BONUS_PERSISTENCY_TOTAL ,BONUS_CREDITED ,INV_GRNT_RATE
,BONUS_REV_ITRVL ,BONUS_SUM ,BONUS_AMNT ,PAID_AMNT ,PAID_ANN_AMNT
,PAID_DEATH_AMNT ,PAID_DIS_AMNT ,PAID_MED_AMNT ,PAID_MED_REIMB
,PAID_EXP_AMNT ,PAID_GRANT_AMNT ,
 
Plan hash value: 2746060288
 
---------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                 | Name                        | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT                          |                             |       |       |       |  2581K(100)|          |
|   1 |  LOAD TABLE CONVENTIONAL                  |                             |       |       |       |            |          |
|   2 |   UNION-ALL                               |                             |       |       |       |            |          |
|   3 |    NESTED LOOPS OUTER                     |                             |     8 |  1264 |       |    24  (17)| 00:00:01 |
|*  4 |     HASH JOIN OUTER                       |                             |     8 |   912 |       |    24  (17)| 00:00:01 |
|*  5 |      HASH JOIN OUTER                      |                             |     8 |   840 |       |    20  (15)| 00:00:01 |
|*  6 |       HASH JOIN OUTER                     |                             |     8 |   744 |       |    17  (18)| 00:00:01 |
|*  7 |        HASH JOIN OUTER                    |                             |     8 |   648 |       |    13  (16)| 00:00:01 |
|*  8 |         HASH JOIN OUTER                   |                             |     8 |   552 |       |    10  (20)| 00:00:01 |
|   9 |          MERGE JOIN OUTER                 |                             |     8 |   456 |       |     6  (17)| 00:00:01 |
|  10 |           TABLE ACCESS BY INDEX ROWID     | PRE_INSUR_APPL              |     8 |   360 |       |     2   (0)| 00:00:01 |
|  11 |            INDEX FULL SCAN                | PRIMARY_KEY                 |     8 |       |       |     1   (0)| 00:00:01 |
|* 12 |           SORT JOIN                       |                             |     8 |    96 |       |     4  (25)| 00:00:01 |
|  13 |            TABLE ACCESS FULL              | TMP_FACE_AMNT_APPLID        |     8 |    96 |       |     3   (0)| 00:00:01 |
|  14 |          TABLE ACCESS FULL                | TMP_ACCOUNT_V_E_APPLID      |     8 |    96 |       |     3   (0)| 00:00:01 |
|  15 |         TABLE ACCESS FULL                 | TMP_YEAR_PREM_RG_APPLID     |     8 |    96 |       |     3   (0)| 00:00:01 |
|  16 |        TABLE ACCESS FULL                  | TMP_YEAR_PREM_SG_APPLID     |     8 |    96 |       |     3   (0)| 00:00:01 |
|  17 |       TABLE ACCESS FULL                   | TMP_SUM_PRE_APPLID          |     8 |    96 |       |     3   (0)| 00:00:01 |
|  18 |      TABLE ACCESS FULL                    | TMP_INSUR_DUR_APPLID        |     8 |    72 |       |     3   (0)| 00:00:01 |
|  19 |     TABLE ACCESS BY INDEX ROWID           | TMP_COST_CENTER_CNTRNO      |     1 |    44 |       |     0   (0)|          |
|* 20 |      INDEX UNIQUE SCAN                    | KEY_COST_CENTER_CNTRNO      |     1 |       |       |     0   (0)|          |
|* 21 |    HASH JOIN RIGHT OUTER                  |                             |  4326K|  1390M|       |   613K  (2)| 02:02:48 |
|  22 |     TABLE ACCESS FULL                     | TMP_COST_CENTER_CNTRNO      |  1877 | 82588 |       |     5   (0)| 00:00:01 |
|* 23 |     HASH JOIN RIGHT OUTER                 |                             |  4326K|  1209M|       |   613K  (2)| 02:02:48 |
|  24 |      TABLE ACCESS FULL                    | TMP_PAID_MED_AMNT_CNTRNO    |  1872 | 50544 |       |     5   (0)| 00:00:01 |
|* 25 |      HASH JOIN RIGHT OUTER                |                             |  4326K|  1097M|       |   613K  (2)| 02:02:47 |
|  26 |       TABLE ACCESS FULL                   | TMP_INSUR_DUR_CNTRNO        |  1862 | 48412 |       |     5   (0)| 00:00:01 |
|* 27 |       HASH JOIN RIGHT OUTER               |                             |  4326K|   990M|       |   613K  (2)| 02:02:46 |
|  28 |        TABLE ACCESS FULL                  | TMP_MEDDATE_CLAIMFLAG_ACCID |     1 |    35 |       |     2   (0)| 00:00:01 |
|* 29 |        HASH JOIN RIGHT OUTER              |                             |  4326K|   845M|   165M|   613K  (2)| 02:02:46 |
|  30 |         TABLE ACCESS FULL                 | TMP_ACCOUNT_V_B_ACCID       |  8653K|    66M|       |  3616   (5)| 00:00:44 |
|* 31 |         HASH JOIN RIGHT OUTER             |                             |  4326K|   812M|       |   558K  (2)| 01:51:48 |
|  32 |          TABLE ACCESS FULL                | TMP_ACCOUNT_V_E_ACCID       |    14 |   112 |       |     3   (0)| 00:00:01 |
|* 33 |          HASH JOIN RIGHT OUTER            |                             |  4326K|   779M|   165M|   558K  (2)| 01:51:47 |
|  34 |           TABLE ACCESS FULL               | TMP_FEE_INCOME_ACCID        |  8653K|    66M|       |  3728   (5)| 00:00:45 |
|* 35 |           HASH JOIN RIGHT OUTER           |                             |  4326K|   746M|   139M|   507K  (2)| 01:41:27 |
|  36 |            TABLE ACCESS FULL              | TMP_FUND_AVRG1_ACCID        |  7337K|    55M|       |  3199   (5)| 00:00:39 |
|* 37 |            HASH JOIN RIGHT OUTER          |                             |  4326K|   713M|   165M|   458K  (2)| 01:31:48 |
|  38 |             TABLE ACCESS FULL             | TMP_FUND_AVRGS_ACCID        |  8653K|    66M|       |  3756   (5)| 00:00:46 |
|* 39 |             HASH JOIN RIGHT OUTER         |                             |  4326K|   680M|   165M|   410K  (2)| 01:22:07 |
|  40 |              TABLE ACCESS FULL            | TMP_PAID_AMNT_ACCID         |  8653K|    66M|       |  3728   (5)| 00:00:45 |
|* 41 |              HASH JOIN RIGHT OUTER        |                             |  4326K|   647M|   165M|   363K  (2)| 01:12:46 |
|  42 |               TABLE ACCESS FULL           | TMP_SUM_PRE_ACCID           |  8653K|    66M|       |  3728   (5)| 00:00:45 |
|* 43 |               HASH JOIN RIGHT OUTER       |                             |  4326K|   614M|   165M|   318K  (2)| 01:03:45 |
|  44 |                TABLE ACCESS FULL          | TMP_YEAR_PREM_RG_ACCID      |  8653K|    66M|       |  3728   (5)| 00:00:45 |
|* 45 |                HASH JOIN RIGHT OUTER      |                             |  4326K|   581M|   165M|   275K  (2)| 00:55:03 |
|  46 |                 TABLE ACCESS FULL         | TMP_YEAR_PREM_SG_ACCID      |  8653K|    66M|       |  3644   (5)| 00:00:44 |
|* 47 |                 HASH JOIN RIGHT OUTER     |                             |  4326K|   548M|   165M|   233K  (2)| 00:46:42 |
|  48 |                  TABLE ACCESS FULL        | TMP_ACC_DIS_AMNT_ACCID      |  8653K|    66M|       |  3616   (5)| 00:00:44 |
|* 49 |                  HASH JOIN RIGHT OUTER    |                             |  4326K|   515M|   165M|   193K  (2)| 00:38:41 |
|  50 |                   TABLE ACCESS FULL       | TMP_FUND_OUTGO_ACCID        |  8654K|    66M|       |  3589   (5)| 00:00:44 |
|* 51 |                   HASH JOIN RIGHT OUTER   |                             |  4326K|   482M|   165M|   154K  (2)| 00:30:59 |
|  52 |                    TABLE ACCESS FULL      | TMP_FUND_INCOME_ACCID       |  8654K|    66M|       |  3728   (5)| 00:00:45 |
|* 53 |                    HASH JOIN RIGHT OUTER  |                             |  4326K|   449M|   165M|   117K  (2)| 00:23:36 |
|  54 |                     TABLE ACCESS FULL     | TMP_FEE_INCOME_TOTAL_ACC_ID |  8654K|    66M|       |  3728   (5)| 00:00:45 |
|* 55 |                     HASH JOIN RIGHT OUTER |                             |  4326K|   416M|   132M| 82683   (2)| 00:16:33 |
|  56 |                      TABLE ACCESS FULL    | TMP_FUND_B_ACCID            |  7338K|    48M|       |  2808   (6)| 00:00:34 |
|* 57 |                      TABLE ACCESS FULL    | PRE_MED_FUND_ACC            |  4326K|   387M|       | 51358   (2)| 00:10:17 |
|  58 |    NESTED LOOPS OUTER                     |                             |     1 |   344 |       |  1416K  (1)| 04:43:24 |
|  59 |     NESTED LOOPS OUTER                    |                             |     1 |   336 |       |  1416K  (1)| 04:43:24 |
|  60 |      NESTED LOOPS OUTER                   |                             |     1 |   328 |       |  1416K  (1)| 04:43:24 |
|  61 |       NESTED LOOPS OUTER                  |                             |     1 |   320 |       |  1416K  (1)| 04:43:24 |
|  62 |        NESTED LOOPS OUTER                 |                             |     1 |   312 |       |  1416K  (1)| 04:43:24 |
|* 63 |         HASH JOIN RIGHT SEMI              |                             |     1 |   304 |  2134M|  1416K  (1)| 04:43:24 |
|  64 |          INDEX FAST FULL SCAN             | LH_01                       |   101M|   970M|       |   152K  (2)| 00:30:36 |
|* 65 |          HASH JOIN RIGHT OUTER            |                             |  8653K|  2426M|   165M|  1030K  (1)| 03:26:11 |
|  66 |           TABLE ACCESS FULL               | TMP_FUND_OUTGO_ACCID        |  8654K|    66M|       |  3589   (5)| 00:00:44 |
|* 67 |           HASH JOIN RIGHT OUTER           |                             |  8653K|  2360M|   165M|   896K  (1)| 02:59:22 |
|  68 |            TABLE ACCESS FULL              | TMP_SUM_PRE_ACCID           |  8653K|    66M|       |  3728   (5)| 00:00:45 |
|* 69 |            HASH JOIN RIGHT OUTER          |                             |  8653K|  2294M|   165M|   765K  (1)| 02:33:10 |
|  70 |             TABLE ACCESS FULL             | TMP_PAID_AMNT_ACCID         |  8653K|    66M|       |  3728   (5)| 00:00:45 |
|* 71 |             HASH JOIN RIGHT OUTER         |                             |  8653K|  2228M|   165M|   638K  (1)| 02:07:37 |
|  72 |              TABLE ACCESS FULL            | TMP_FUND_AVRGS_ACCID        |  8653K|    66M|       |  3756   (5)| 00:00:46 |
|* 73 |              HASH JOIN RIGHT OUTER        |                             |  8653K|  2162M|   165M|   513K  (1)| 01:42:44 |
|  74 |               TABLE ACCESS FULL           | TMP_FEE_INCOME_ACCID        |  8653K|    66M|       |  3728   (5)| 00:00:45 |
|* 75 |               HASH JOIN RIGHT OUTER       |                             |  8653K|  2096M|   165M|   392K  (1)| 01:18:30 |
|  76 |                TABLE ACCESS FULL          | TMP_ACCOUNT_V_B_ACCID       |  8653K|    66M|       |  3616   (5)| 00:00:44 |
|* 77 |                HASH JOIN RIGHT OUTER      |                             |  8653K|  2030M|   132M|   274K  (2)| 00:54:56 |
|  78 |                 TABLE ACCESS FULL         | TMP_FUND_B_ACCID            |  7338K|    48M|       |  2808   (6)| 00:00:34 |
|* 79 |                 HASH JOIN RIGHT OUTER     |                             |  8653K|  1972M|   139M|   162K  (2)| 00:32:27 |
|  80 |                  TABLE ACCESS FULL        | TMP_FUND_AVRG1_ACCID        |  7337K|    55M|       |  3199   (5)| 00:00:39 |
|* 81 |                  HASH JOIN RIGHT OUTER    |                             |  8653K|  1906M|       | 52225   (4)| 00:10:27 |
|  82 |                   TABLE ACCESS FULL       | TMP_PAID_MED_AMNT_ACCID     | 30936 |   332K|       |    19   (6)| 00:00:01 |
|* 83 |                   HASH JOIN RIGHT OUTER   |                             |  8653K|  1815M|       | 52107   (4)| 00:10:26 |
|  84 |                    TABLE ACCESS FULL      | TMP_COST_CENTER_CNTRNO      |  1877 | 82588 |       |     5   (0)| 00:00:01 |
|* 85 |                    HASH JOIN RIGHT OUTER  |                             |  8653K|  1452M|       | 52004   (3)| 00:10:25 |
|  86 |                     TABLE ACCESS FULL     | TMP_INSUR_DUR_CNTRNO        |  1862 | 48412 |       |     5   (0)| 00:00:01 |
|* 87 |                     HASH JOIN RIGHT OUTER |                             |  8653K|  1237M|       | 51901   (3)| 00:10:23 |
|  88 |                      TABLE ACCESS FULL    | TMP_ACCOUNT_V_E_ACCID       |    14 |   112 |       |     3   (0)| 00:00:01 |
|* 89 |                      HASH JOIN RIGHT OUTER|                             |  8653K|  1171M|       | 51800   (3)| 00:10:22 |
|  90 |                       TABLE ACCESS FULL   | TMP_MEDDATE_CLAIMFLAG_ACCID |     1 |    35 |       |     2   (0)| 00:00:01 |
|* 91 |                       TABLE ACCESS FULL   | PRE_MED_FUND_ACC            |  8653K|   883M|       | 51700   (3)| 00:10:21 |
|  92 |         TABLE ACCESS BY INDEX ROWID       | TMP_YEAR_PREM_RG_ACCID      |     1 |     8 |       |     1   (0)| 00:00:01 |
|* 93 |          INDEX UNIQUE SCAN                | KEY_YEAR_PREM_RG_ACCID      |     1 |       |       |     1   (0)| 00:00:01 |
|  94 |        TABLE ACCESS BY INDEX ROWID        | TMP_YEAR_PREM_SG_ACCID      |     1 |     8 |       |     1   (0)| 00:00:01 |
|* 95 |         INDEX UNIQUE SCAN                 | KEY_YEAR_PREM_SG_ACCID      |     1 |       |       |     1   (0)| 00:00:01 |
|  96 |       TABLE ACCESS BY INDEX ROWID         | TMP_ACC_DIS_AMNT_ACCID      |     1 |     8 |       |     1   (0)| 00:00:01 |
|* 97 |        INDEX UNIQUE SCAN                  | KEY_ACC_DIS_AMNT_ACCID      |     1 |       |       |     1   (0)| 00:00:01 |
|  98 |      TABLE ACCESS BY INDEX ROWID          | TMP_FUND_INCOME_ACCID       |     1 |     8 |       |     1   (0)| 00:00:01 |
|* 99 |       INDEX UNIQUE SCAN                   | KEY_FUND_INCOME_ACCID       |     1 |       |       |     1   (0)| 00:00:01 |
| 100 |     TABLE ACCESS BY INDEX ROWID           | TMP_FEE_INCOME_TOTAL_ACC_ID |     1 |     8 |       |     1   (0)| 00:00:01 |
|*101 |      INDEX UNIQUE SCAN                    | KEY_FEE_INCOME_TOTAL_ACC_ID |     1 |       |       |     1   (0)| 00:00:01 |
|*102 |    HASH JOIN RIGHT OUTER                  |                             |  8653K|  4085M|       |   202K  (3)| 00:40:35 |
| 103 |     TABLE ACCESS FULL                     | TMP_COST_CENTER_CNTRNO      |  1877 | 82588 |       |     5   (0)| 00:00:01 |
|*104 |     HASH JOIN RIGHT OUTER                 |                             |  8653K|  3722M|       |   202K  (3)| 00:40:34 |
| 105 |      TABLE ACCESS FULL                    | TMP_PAID_MED_AMNT_CNTRNO    |  1872 | 50544 |       |     5   (0)| 00:00:01 |
|*106 |      HASH JOIN RIGHT OUTER                |                             |  8653K|  3499M|       |   202K  (3)| 00:40:33 |
| 107 |       TABLE ACCESS FULL                   | TMP_INSUR_DUR_CNTRNO        |  1862 | 48412 |       |     5   (0)| 00:00:01 |
|*108 |       HASH JOIN RIGHT OUTER               |                             |  8653K|  3284M|       |   202K  (3)| 00:40:31 |
| 109 |        TABLE ACCESS FULL                  | TMP_ACCOUNT_V_B_CNTRNO      |     1 |    29 |       |     3   (0)| 00:00:01 |
|*110 |        HASH JOIN RIGHT OUTER              |                             |  8653K|  3045M|       |   202K  (3)| 00:40:30 |
| 111 |         TABLE ACCESS FULL                 | TMP_ACCOUNT_V_E_CNTRNO      |     1 |    29 |       |     3   (0)| 00:00:01 |
|*112 |         HASH JOIN RIGHT OUTER             |                             |  8653K|  2805M|       |   202K  (2)| 00:40:29 |
| 113 |          TABLE ACCESS FULL                | TMP_FEE_INCOME_CNTRNO       |     1 |    25 |       |     3   (0)| 00:00:01 |
|*114 |          HASH JOIN RIGHT OUTER            |                             |  8653K|  2599M|       |   202K  (2)| 00:40:28 |
| 115 |           TABLE ACCESS FULL               | TMP_FUND_AVRGS_CNTRNO       |     1 |    29 |       |     3   (0)| 00:00:01 |
|*116 |           HASH JOIN RIGHT OUTER           |                             |  8653K|  2360M|       |   202K  (2)| 00:40:26 |
| 117 |            TABLE ACCESS FULL              | TMP_IPSN_NO                 |     1 |    32 |       |     3   (0)| 00:00:01 |
|*118 |            HASH JOIN RIGHT OUTER          |                             |  8653K|  2096M|       |   202K  (2)| 00:40:25 |
| 119 |             TABLE ACCESS FULL             | TMP_PAID_AMNT_CNTRNO        |     1 |    25 |       |     3   (0)| 00:00:01 |
|*120 |             HASH JOIN RIGHT OUTER         |                             |  8653K|  1889M|       |   201K  (2)| 00:40:24 |
| 121 |              TABLE ACCESS FULL            | TMP_PAID_EXP_AMNT_CNTRNO    |     1 |    29 |       |     3   (0)| 00:00:01 |
|*122 |              HASH JOIN RIGHT OUTER        |                             |  8653K|  1650M|       |   201K  (2)| 00:40:23 |
| 123 |               TABLE ACCESS FULL           | TMP_SUM_PRE_CNTRNO          |     1 |    29 |       |     3   (0)| 00:00:01 |
|*124 |               HASH JOIN RIGHT OUTER       |                             |  8653K|  1411M|       |   201K  (2)| 00:40:22 |
| 125 |                TABLE ACCESS FULL          | TMP_YEAR_PREM_RG_CNTRNO     |     1 |    25 |       |     3   (0)| 00:00:01 |
|*126 |                HASH JOIN RIGHT OUTER      |                             |  8653K|  1204M|       |   201K  (2)| 00:40:20 |
| 127 |                 TABLE ACCESS FULL         | TMP_YEAR_PREM_SG_CNTRNO     |     1 |    25 |       |     3   (0)| 00:00:01 |
|*128 |                 HASH JOIN RIGHT OUTER     |                             |  8653K|   998M|       |   201K  (2)| 00:40:19 |
| 129 |                  TABLE ACCESS FULL        | TMP_ACC_DIS_AMNT_CNTRNO     |     1 |    25 |       |     3   (0)| 00:00:01 |
|*130 |                  HASH JOIN RIGHT OUTER    |                             |  8653K|   792M|   165M|   201K  (2)| 00:40:18 |
| 131 |                   TABLE ACCESS FULL       | TMP_FUND_OUTGO_ACCID        |  8654K|    66M|       |  3589   (5)| 00:00:44 |
|*132 |                   HASH JOIN RIGHT OUTER   |                             |  8653K|   726M|   165M|   148K  (2)| 00:29:41 |
| 133 |                    TABLE ACCESS FULL      | TMP_FUND_INCOME_ACCID       |  8654K|    66M|       |  3728   (5)| 00:00:45 |
|*134 |                    HASH JOIN RIGHT OUTER  |                             |  8653K|   660M|   165M| 98472   (2)| 00:19:42 |
| 135 |                     TABLE ACCESS FULL     | TMP_FEE_INCOME_TOTAL_ACC_ID |  8654K|    66M|       |  3728   (5)| 00:00:45 |
|*136 |                     TABLE ACCESS FULL     | PRE_MED_FUND_ACC            |  8653K|   594M|       | 51822   (3)| 00:10:22 |
| 137 |    NESTED LOOPS OUTER                     |                             |     1 |   152 |       |   347K  (2)| 01:09:29 |
| 138 |     NESTED LOOPS OUTER                    |                             |     1 |   108 |       |   347K  (2)| 01:09:29 |
|*139 |      HASH JOIN SEMI                       |                             |     1 |    82 |   693M|   347K  (2)| 01:09:29 |
|*140 |       TABLE ACCESS FULL                   | PRE_MED_FUND_ACC            |  8653K|   594M|       | 51699   (3)| 00:10:21 |
| 141 |       INDEX FAST FULL SCAN                | LH_01                       |   101M|   970M|       |   152K  (2)| 00:30:36 |
| 142 |      TABLE ACCESS BY INDEX ROWID          | TMP_INSUR_DUR_CNTRNO        |     1 |    26 |       |     1   (0)| 00:00:01 |
|*143 |       INDEX UNIQUE SCAN                   | KEY_TMP_INSUR_DUR_CNTRNO    |     1 |       |       |     0   (0)|          |
| 144 |     TABLE ACCESS BY INDEX ROWID           | TMP_COST_CENTER_CNTRNO      |     1 |    44 |       |     1   (0)| 00:00:01 |
|*145 |      INDEX UNIQUE SCAN                    | KEY_COST_CENTER_CNTRNO      |     1 |       |       |     0   (0)|          |
---------------------------------------------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   4 - access("T1"."APPL_ID"="TMPAP30"."APPL_ID")
   5 - access("T1"."APPL_ID"="TMPAP53"."APPL_ID")
   6 - access("T1"."APPL_ID"="TMPAP50"."APPL_ID")
   7 - access("T1"."APPL_ID"="TMPAP51"."APPL_ID")
   8 - access("T1"."APPL_ID"="TMPAP44"."APPL_ID")
  12 - access("T1"."APPL_ID"="TMPAP31"."APPL_ID")
       filter("T1"."APPL_ID"="TMPAP31"."APPL_ID")
  20 - access("T1"."CG_NO"="TMP"."CNTR_NO")
  21 - access("T"."CNTR_NO"="TMP1"."CNTR_NO")
  23 - access("T"."CNTR_NO"="TMP69"."CNTR_NO")
  25 - access("T"."CNTR_NO"="TMPNO30"."CNTR_NO")
  27 - access("T"."ACC_ID"="TMPID2046"."ACC_ID")
  29 - access("T"."ACC_ID"="TMPID43"."ACC_ID")
  31 - access("T"."ACC_ID"="TMPID44"."ACC_ID")
  33 - access("T"."ACC_ID"="TMPID56"."ACC_ID")
  35 - access("T"."ACC_ID"="TMPID82"."ACC_ID")
  37 - access("T"."ACC_ID"="TMPID81"."ACC_ID")
  39 - access("T"."ACC_ID"="TMPID65"."ACC_ID")
  41 - access("T"."ACC_ID"="TMPID53"."ACC_ID")
  43 - access("T"."ACC_ID"="TMPID51"."ACC_ID")
  45 - access("T"."ACC_ID"="TMPID50"."ACC_ID")
  47 - access("T"."ACC_ID"="TMPID58"."ACC_ID")
  49 - access("T"."ACC_ID"="TMPID78"."ACC_ID")
  51 - access("T"."ACC_ID"="TMPID79"."ACC_ID")
  53 - access("T"."ACC_ID"="TMPID57"."ACC_ID")
  55 - access("T"."ACC_ID"="TMPID77"."ACC_ID")
  57 - filter("T"."FLAG"='1')
  63 - access("T"."CG_ID"="B"."CG_ID" AND "B"."IPSN_NO"=TO_NUMBER("T"."IPSN_NO"))
  65 - access("T"."ACC_ID"="TMPID78"."ACC_ID")
  67 - access("T"."ACC_ID"="TMPID53"."ACC_ID")
  69 - access("T"."ACC_ID"="TMPID65"."ACC_ID")
  71 - access("T"."ACC_ID"="TMPID81"."ACC_ID")
  73 - access("T"."ACC_ID"="TMPID56"."ACC_ID")
  75 - access("T"."ACC_ID"="TMPID43"."ACC_ID")
  77 - access("T"."ACC_ID"="TMPID77"."ACC_ID")
  79 - access("T"."ACC_ID"="TMPID82"."ACC_ID")
  81 - access("T"."ACC_ID"="TMPID69"."ACC_ID")
  83 - access("T"."CNTR_NO"="TMP25"."CNTR_NO")
  85 - access("T"."CNTR_NO"="TMPNO30"."CNTR_NO")
  87 - access("T"."ACC_ID"="TMPID44"."ACC_ID")
  89 - access("T"."ACC_ID"="TMPID2046"."ACC_ID")
  91 - filter(("T"."FLAG"='2' OR "T"."FLAG"='5'))
  93 - access("T"."ACC_ID"="TMPID51"."ACC_ID")
  95 - access("T"."ACC_ID"="TMPID50"."ACC_ID")
  97 - access("T"."ACC_ID"="TMPID58"."ACC_ID")
  99 - access("T"."ACC_ID"="TMPID79"."ACC_ID")
 101 - access("T"."ACC_ID"="TMPID57"."ACC_ID")
 102 - access("T"."CNTR_NO"="TMP46"."CNTR_NO")
 104 - access("T"."CNTR_NO"="TMPNO69"."CNTR_NO")
 106 - access("T"."CNTR_NO"="TMPNO30"."CNTR_NO")
 108 - access("T"."CNTR_NO"="TMPNO43"."CNTR_NO")
 110 - access("T"."CNTR_NO"="TMPNO44"."CNTR_NO")
 112 - access("T"."CNTR_NO"="TMPNO56"."CNTR_NO")
 114 - access("T"."CNTR_NO"="TMPNO81"."CNTR_NO")
 116 - access("T"."CNTR_NO"="TMPNO4"."CNTR_NO")
 118 - access("T"."CNTR_NO"="TMPNO65"."CNTR_NO")
 120 - access("T"."CNTR_NO"="TMPNO71"."CNTR_NO")
 122 - access("T"."CNTR_NO"="TMPNO53"."CNTR_NO")
 124 - access("T"."CNTR_NO"="TMPNO51"."CNTR_NO")
 126 - access("T"."CNTR_NO"="TMPNO50"."CNTR_NO")
 128 - access("T"."CNTR_NO"="TMPNO58"."CNTR_NO")
 130 - access("T"."ACC_ID"="TMPID78"."ACC_ID")
 132 - access("T"."ACC_ID"="TMPID79"."ACC_ID")
 134 - access("T"."ACC_ID"="TMPID57"."ACC_ID")
 136 - filter(("T"."FLAG"='4' OR "T"."FLAG"='6'))
 139 - access("T"."CG_ID"="B"."CG_ID" AND "B"."IPSN_NO"=TO_NUMBER("T"."IPSN_NO"))
 140 - filter("T"."FLAG"='2')
 143 - access("T"."CNTR_NO"="TMPNO30"."CNTR_NO")
 145 - access("T"."CNTR_NO"="TMP3"."CNTR_NO")
 
 
245 rows selected.

  是一个insert select。然后其中的select是 一堆union all 组合起来的。通过粗略一看,看的我头晕眼花。

  给对方打电话,询问情况,得知开发说以前跑的比现在快

  我让对方跑select * from table(dbms_xplan.display_awr('0ah5a8dbk28fh'),null,null,'advanced'); 并将内容发给我

  其中存在三个执行计划, cost 分别有三个,当前跑的这个是其中cost最大的那个

  第一、我不在现场

  第二、现在没时间,也没办法详细优化

  所以我选择的方案,就是通过coe_xfr_sql_profile.sql 来将执行计划绑定为cost最小的那个!

  后来对方领导决定先不kill,因为我和对方说,这里是DML操作,回滚时间会比较长。

  这里反应出了问题,首先开发连select的速度都没测,就直接insert,真是。。而且,再弱也应该知道开并行吧?这里也没有开并行

  等周二详细优化的时候,思路如下:

  1、先检查统计信息,并检查这个SQL产生三个执行计划的主要原因

  2、将union all 拆开,分别优化每个SQL(如果能用with as 尝试运用)

  3、优化好查询速度之后 开并行跑。这里注意,看并行DML 要打开session级别的并行DML

  未完待续……

时间: 2025-01-19 02:58:23

优化SQL一条的相关文章

sql查询-求帮忙优化我这条sql语句

问题描述 求帮忙优化我这条sql语句 首先说一下下面sql语句要用到的表的基本情况: 一.有三张表,一张叫equipment,一张叫sensor,一张叫sensorInputData 二.三表关系是equipment下有多个sensor,sensor下有多个sensorInputdata,所以sensor下有一个equipment的主键quipmentId做外键,sensorInputData下也有一个sensor的主键sensorId做外键,其他都是各自表的属性,应该能比较清晰的看出来 下面是

Oracle之SQL语句性能优化(34条优化方法)_oracle

好多同学对sql的优化好像是知道的甚少,最近总结了以下34条仅供参考. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WH

应用事件探查器优化SQL Server系统

概述 当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析.是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析.但本文并不介绍如何使用Profiler 工具,而是将介绍如何使用read80trace(有关该工具见后面介绍)工具结合自定义的存储过

Oracle SQL_TRACE和10046事件的优化SQL实例

一数据库版本 LEO1@LEO1>select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Release11.2.0.1.0 - Production CORE  

应用Profiler优化SQL Server数据库系统

当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析.是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析.但本文并不介绍如何使用Profiler 工具,而是将介绍如何使用read80trace(有关该工具见后面介绍)工具结合自定义的存储过程来提

sql优化-求大神怎么优化sql 和存储过程呢?

问题描述 求大神怎么优化sql 和存储过程呢? 需求是这样的: 每个人学习分3个阶段,查询出来每个人这3个阶段学习的开始时间和结束时间,放到一个表里t_stage_info. 第1阶段的结束时间做为第二阶段的开始时间,第2阶段学习结束时间作为第3阶段学习开始时间. 这个表结构: t_stage_info(idbigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',person_plan_idbigint(20) NOT NULL COMMENT 'pe

如何优化SQL语句(全)

高性能的SQL语句会在软件运行中起到非常重要的作用,下面小编把最近整理的SQL语句优化资料分享给大家. 第一: 选择最有效率的表名顺序(只在基于规则的seo/' target='_blank'>优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersecti

掌握SQL四条最基本的数据操作语句

数据|语句 掌握sql四条最基本的数据操作语句:insert,select,update和delete. 练掌握sql是数据库用户的宝贵财富.在本文中,我们将引导你掌握四条最基本的数据操作语句-sql的核心功能-来依次介绍比较操作符.选择断言以及三值逻辑.当你完成这些学习后,显然你已经开始算是精通sql了. 在我们开始之前,先使用create table语句来创建一个表(如图1所示).ddl语句对数据库对象如表.列和视进行定义.它们并不对表中的行进行处理,这是因为ddl语句并不处理数据库中实际的

优化Sql语句注意

优化Sql语句需要注意以下几点,当然,只是个人看法 1.尽量不要对列名进行函数处理.而是针对后面的值进行处理 例如where col1 = -5的效率比where -col1=5的效率要高 因为后面的条件对列值进行了计算.这样的条件下优化器无法使用索引 而是要针对所有值进行计算之后才能再比较 2.尽量使用和数剧列一样的值进行操作 如果col1是数值型 那么例如where col1 = 2和where col1= '2′ 则前者效率更高 因为比较字符和数值型的时候 引擎需要把两者都转化成双精度然后