Mam poniżej polecenie aktualizacji, które działa poprawnie, użyłem instrukcji z podzapytaniem, aby znacznie poprawić wydajność, ale z jakiegoś powodu nie mogę dodać dodatkowej kolumny z tej samej tabeli do aktualizacji.Dlaczego nie mogę zaktualizować więcej niż jednej kolumny w tym samym czasie używając słowa kluczowego "Z"?
Works:
UPDATE Table_A SET (Col_One) = (WITH OneValue AS (SELECT DISTINCT t.Col_One
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One FROM OneValue);
Co chciałbym zrobić, to po prostu zawierać inną kolumnę aby zaktualizować również z table_two jak ten
UPDATE Table_A SET (Col_One, Col_Two) = (WITH OneValue AS (SELECT DISTINCT t.Col_One, T.Col_two
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One, Col_Two FROM OneValue);
ale mam-01767 ora zmiana musi być ustawiony wyrażenie podkwerenda. Rozumiem ten błąd, ale nie widzę, jak go generuję. Każda pomoc jest bardzo doceniana.
Z góry dziękuję.
Nie widzę żadnego powodu, dla którego wydajność mogłaby skorzystać z klauzuli faktorowania podkwerendy. Sprawdź plany wykonania, aby zobaczyć, czy istnieje różnica. –
Będąc nowicjuszem w zakresie kodowania, nie jestem pewien, czy mogę poprawnie odpowiedzieć, z wyjątkiem stwierdzenia, że mam problemy z wydajnością z tabeli 2, która jest bardzo dużą tabelą. Rozejrzałem się i znalazłem bardzo pomocne informacje o optymalizacji aktualizacji poprzez askTom [link] (http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:288016031632), zastosowane do mojej sytuacji i wydajność spadła z> 5 minut do <10 sekund. – dee
+1 za patrzenie na asktom, ale -1 za nieprzestrzeganie odsłoniętej filozofii :) Zobacz, jak robi porównania wydajności. Użyj DBMS_Xplan, aby uzyskać plany wykonawcze dla zapytań i poszukaj różnic i strzeż się drugiej kwerendy korzystającej z buforowania danych. –