![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hi, I have the following problem The update is very long (more than 4 hours) table T_SUBJECTVISITFORMITEMS is 3M rows How can I do that more quickly ? Thanks in advance CREATE TABLE T_ITEMFIRSTDATA_STATUS_ICLD AS SELECT *MIN (ITEMFIRSTDATA) ITEMFIRSTDATA , *SUBJECTID, *VISITID, *DB_SOURCE FROM T_SUBJECTVISITFORMITEMS WHERE FORMMNEMONIC = 'STATU' GROUP BY SUBJECTID,VISITID,FORMID,DB_SOURCE; ALTER TABLE *T_SUBJECTVISITFORMITEMS ADD ITEMFIRSTDATA_STATU DATE; UPDATE *T_SUBJECTVISITFORMITEMS B SET ITEMFIRSTDATA_STATU = (SELECT DISTINCT ITEMFIRSTDATA FROM T_ITEMFIRSTDATA_STATUS_ICLD *A WHERE A.SUBJECTID=B.SUBJECTID AND *A.VISITID=B.VISITID AND *A.DB_SOURCE= B.DB_SOURCE); |
#3
| |||
| |||
|
|
Hi, I have the following problem The update is very long (more than 4 hours) table T_SUBJECTVISITFORMITEMS is 3M rows How can I do that more quickly ? Thanks in advance CREATE TABLE T_ITEMFIRSTDATA_STATUS_ICLD AS SELECT MIN (ITEMFIRSTDATA) ITEMFIRSTDATA , SUBJECTID, VISITID, DB_SOURCE FROM T_SUBJECTVISITFORMITEMS WHERE FORMMNEMONIC = 'STATU' GROUP BY SUBJECTID,VISITID,FORMID,DB_SOURCE; ALTER TABLE T_SUBJECTVISITFORMITEMS ADD ITEMFIRSTDATA_STATU DATE; UPDATE T_SUBJECTVISITFORMITEMS B SET ITEMFIRSTDATA_STATU = (SELECT DISTINCT ITEMFIRSTDATA FROM T_ITEMFIRSTDATA_STATUS_ICLD A WHERE A.SUBJECTID=B.SUBJECTID AND A.VISITID=B.VISITID AND A.DB_SOURCE= B.DB_SOURCE); |
#4
| |||
| |||
|
|
On Dec 3, 11:11 pm, "bob123"<nom... (AT) nowhere (DOT) com> wrote: Hi, I have the following problem The update is very long (more than 4 hours) table T_SUBJECTVISITFORMITEMS is 3M rows How can I do that more quickly ? Thanks in advance CREATE TABLE T_ITEMFIRSTDATA_STATUS_ICLD AS SELECT MIN (ITEMFIRSTDATA) ITEMFIRSTDATA , SUBJECTID, VISITID, DB_SOURCE FROM T_SUBJECTVISITFORMITEMS WHERE FORMMNEMONIC = 'STATU' GROUP BY SUBJECTID,VISITID,FORMID,DB_SOURCE; ALTER TABLE T_SUBJECTVISITFORMITEMS ADD ITEMFIRSTDATA_STATU DATE; UPDATE T_SUBJECTVISITFORMITEMS B SET ITEMFIRSTDATA_STATU = (SELECT DISTINCT ITEMFIRSTDATA FROM T_ITEMFIRSTDATA_STATUS_ICLD A WHERE A.SUBJECTID=B.SUBJECTID AND A.VISITID=B.VISITID AND A.DB_SOURCE= B.DB_SOURCE); Try posting the plan. The distinct perhaps means a full table scan of ...icld for each row of ...formitems. Would you happen to have any indices? Does your cpu go nuts? Does statspack have something to say about what is going on in that time period? |
#5
| |||
| |||
|
|
Try posting the plan. The distinct perhaps means a full table scan of ...icld for each row of ...formitems. Would you happen to have any indices? Does your cpu go nuts? Does statspack have something to say about what is going on in that time period? I update all the table T_SUBJECTVISITFORMITEMS |
#6
| |||
| |||
|
|
Try posting the plan. The distinct perhaps means a full table scan of ...icld for each row of ...formitems. Would you happen to have any indices? Does your cpu go nuts? Does statspack have something to say about what is going on in that time period? I update all the table T_SUBJECTVISITFORMITEMS maybe I can avoid this with a CTAS ? below the plan: Plan UPDATE STATEMENT ALL_ROWS Cost: 39,539 Bytes: 68,254,407 Cardinality: 2,527,941 5 UPDATE SYSTEM.T_SUBJECTVISITFORMITEMS 1 TABLE ACCESS FULL TABLE SYSTEM.T_SUBJECTVISITFORMITEMS Cost: 39,539 Bytes: 68,254,407 Cardinality: 2,527,941 4 HASH UNIQUE Cost: 3 Bytes: 27 Cardinality: 1 3 TABLE ACCESS BY INDEX ROWID TABLE SYSTEM.T_ITEMFIRSTDATA_STATUS_ICLD Cost: 2 Bytes: 27 Cardinality: 1 2 INDEX RANGE SCAN INDEX SYSTEM.T_ITEMFIRSTDATA_STATUS Cost: 1 Cardinality: 1 |
#7
| |||
| |||
|
|
bob123 schreef: Try posting the plan. *The distinct perhaps means a full table scan of ...icld for each row of ...formitems. Would you happen to have any indices? Does your cpu go nuts? Does statspack have something to say about what is going on in that time period? I update all the table T_SUBJECTVISITFORMITEMS maybe I can avoid this with a CTAS ? below the plan: Plan UPDATE STATEMENT ALL_ROWS Cost: 39,539 Bytes: 68,254,407 Cardinality: 2,527,941 5 UPDATE SYSTEM.T_SUBJECTVISITFORMITEMS 1 TABLE ACCESS FULL TABLE SYSTEM.T_SUBJECTVISITFORMITEMS Cost: 39,539 Bytes: 68,254,407 Cardinality: 2,527,941 4 HASH UNIQUE Cost: 3 Bytes: 27 Cardinality: 1 3 TABLE ACCESS BY INDEX ROWID TABLE SYSTEM.T_ITEMFIRSTDATA_STATUS_ICLD Cost: 2 Bytes: 27 Cardinality: 1 2 INDEX RANGE SCAN INDEX SYSTEM.T_ITEMFIRSTDATA_STATUS Cost: 1 Cardinality: 1 Wow, my mistake, Oracle does create indexes on its own. |
![]() |
| Thread Tools | |
| Display Modes | |
| |