Tôi có tuyên bố cập nhật được hiển thị bên dưới hoạt động tốt, tôi đã sử dụng câu lệnh có trong truy vấn con để cải thiện hiệu suất nhưng vì lý do nào đó, tôi không được phép thêm cột bổ sung từ cùng một bảng để cập nhật.Tại sao tôi không thể cập nhật nhiều cột cùng một lúc bằng Từ khoá?
trình:
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);
Những gì tôi muốn làm là chỉ cần bao gồm một cột để cập nhật cũng từ table_two như thế này
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);
nhưng tôi nhận ora-01.767 bản cập nhật thiết lập biểu phải một truy vấn phụ. Tôi hiểu lỗi này nhưng không thấy cách tôi tạo ra nó. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.
Xin cảm ơn trước.
Tôi không thấy bất kỳ lý do gì khiến hiệu suất sẽ được hưởng lợi từ mệnh đề bao thanh toán phụ. Kiểm tra các kế hoạch thực hiện để xem có sự khác biệt nào không. –
Cũng mới để viết mã, tôi không chắc chắn tôi có thể trả lời bạn một cách chính xác trừ khi nói rằng tôi đã gặp rắc rối với hiệu suất từ bảng 2 mà là một bảng rất lớn. Tôi nhìn xung quanh và tìm thấy một số thông tin cập nhật rất hữu ích thông qua askTom [link] (http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:288016031632), áp dụng nó đến tình hình và hiệu suất của tôi đã đi từ> 5 phút đến <10 giây. – dee
+1 để xem asktom, nhưng -1 cho không theo triết lý tiếp xúc ở đó :) Có một cái nhìn về cách anh ta so sánh hiệu suất. Sử dụng DBMS_Xplan để có được kế hoạch thực hiện cho các truy vấn và tìm sự khác biệt, và hãy cẩn thận của một truy vấn thứ hai được hưởng lợi từ bộ nhớ đệm dữ liệu –