Ich habe unter Update-Anweisung, die sehr langsam ist, um in Merge konvertiert werden. Ich versuche, die folgende Anweisung zu ändern, um die Anweisung zusammenzuführen. alle VorschlägeConvert Self Beitritt Update zu Merge
UPDATE CLASS CL
SET (PARENT_CLS_TITLE,
PARENT_SECTION_FLAG,
PARENT_ACADEMIC_CODE,
PARENT_CLASS_FL
) =
(select
PARENT.CLASS_TITLE PARENT_CLASS_TITLE
,PARENT.SECTION_FLAG PARENT_SECTION_FLAG
,PARENT.ACADEMIC_CODE PARENT_ACADEMIC_CODE
,PARENT.CLASS_FL PARENT_CLASS_FL
from CLASS CHILD
, CLASS PARENT
where CHILD.PARENT_TERM_NUMBER = PARENT.TERM_CODE || '|' ||PARENT.CLASS_NUMBER
AND CL.CRSE_ID=CHILD.CRSE_ID
AND CL.CRSE_OFFER_NUM=CHILD.CRSE_OFFER_NUM
AND CL.TERM_CODE=CHILD.TERM_CODE
AND CL.SESSION_CODE=CHILD.SESSION_CODE
AND CL.CLS_SECTION_CODE=CHILD.CLS_SECTION_CODE)
Definition und Index auf dem Tisch. Dies ist das einzige Material auf dem Tisch vorhanden keine andere Einschränkungen etc
CREATE TABLE CLASS
(
CRSE_ID VARCHAR2(255),
CRSE_OFFER_NUM VARCHAR2(255),
TERM_CODE VARCHAR2(255),
SESSION_CODE VARCHAR2(255),
CLS_SECTION_CODE VARCHAR2(255),
CLASS_NUMBER VARCHAR2(255),
PARENT_TERM_NUMBER VARCHAR2(255),
CLASS_TITLE VARCHAR2(255),
SECTION_FLAG VARCHAR2(1),
ACADEMIC_CODE VARCHAR2(255),
CLASS_FL VARCHAR2(1),
PARENT_CLS_TITLE VARCHAR2(255),
PARENT_SECTION_FLAG VARCHAR2(1),
PARENT_ACADEMIC_CODE VARCHAR2(255),
PARENT_CLASS_FL VARCHAR2(1)
);
CREATE UNIQUE INDEX IDX_CLASS ON CLASS
(CRSE_ID, CRSE_OFFER_NUM, TERM_CODE, SESSION_CODE, CLS_SECTION_CODE);
Bearbeiten Sie Ihre Frage und fügen Sie die Definition der CLASS-Tabelle hinzu, einschließlich aller Datentypen, Schlüssel (primär, eindeutig und fremd) und Indizes. Vielen Dank. –
Und abhängig von der Antwort auf Bobs Frage ist es möglich, dass Sie keine MERGE-Anweisung benötigen (obwohl MERGE für diese Art von Problem oft die beste Wahl ist). Sie können beispielsweise Ihre Tabelle direkt über den Join aktualisieren. Die Zeitersparnis wird, wenn überhaupt möglich, durch das Umschreiben der Anweisung erreicht, nicht notwendigerweise durch die Verwendung von MERGE over UPDATE. (Aber, wieder, das hängt davon ab, welche Schlüssel Sie in der Tabelle CLASS haben können.) – mathguy
Ich habe das Skript von Kröte zur Verfügung gestellt. Danke, dass du dir das angeschaut hast. Diese Tabelle hat viele Zeilen und das Update wird für immer ausgeführt. – user1751356