Einnahme habe ich eine Tabelle in Oracle:Insert-Sequenz lange Zeit
table1
record_id variable value
1 100 50
1 101 40
2 100 30
2 101 60
1 102 100
Es hat mehr als 7 Millionen Zeilen. Ich möchte eine weitere Spalte als eindeutige ID hinzufügen. So würde die Tabelle in etwa so aussehen:
table1
id record_id variable value
1 1 100 50
2 1 101 40
3 2 100 30
4 2 101 60
5 1 102 100
Aber wenn ich versuche, sie aktualisieren mit:
UPDATE table1 SET id = my_sequence.nextval;
Es dauert lange. Gibt es einen schnelleren Weg, dies zu erreichen?
ist die Tabellenabfrage erstellen:
CREATE TABLE "ABCUSER"."NUM_VAL"
("RECORD_ID" NUMBER(*,0),
"VAR" NUMBER,
"VAR_SEQUENCE" NUMBER,
"VAR_DATATYPE" NUMBER,
"CREATED_DATE" DATE,
"UPDATED_DATE" DATE,
"VAR_VALUE_NUMBER" VARCHAR2(40 BYTE),
"VAR_VALUE_TEXT" VARCHAR2(255 BYTE),
"VAR_VALUE_DATE" DATE,
"ID" NUMBER
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
CREATE INDEX "ABCUSER"."IMD_TB_UNIQUE_ID" ON "ABCUSER"."NUM_VAL" ("RECORD_ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
Sequenz:.
CREATE SEQUENCE "ABCUSER" "MY_SEQUENCE" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START MIT 10186338807 CACHE 100 NOORDER NOCYCLE;
@MikeNakis - done – dang
pOrinGs Antwort wird funktionieren, aber ich denke nicht, dass es irgendwelche großen Leistungsvorteile bringen wird, da Sequenzen in hohem Maße optimiert sind. Wenn die Sequenz der Engpass ist, ist es sehr einfach, die CACHE-Klausel der Sequenz von "100" zu "1000" oder zu "10000" zu ändern, um ihre Leistung um Grßenordnungen zu verbessern. Ich denke, Sie sollten auch definieren, was Sie mit "langer Zeit" meinen, denn 7 Millionen Datensätze benötigen einige Zeit, um selbst im optimalen Szenario zu aktualisieren. –
Welche Version von Oracle? – APC