Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cập nhật oracle bảng phân vùng

Vấn đề mà bạn đang cố gắng giải quyết là gì? Không hợp lý khi chạy UPDATE riêng biệt các câu lệnh đối với mỗi phân vùng trong một vòng lặp. Nếu bạn thực sự muốn cập nhật mọi hàng trong bảng trong đó ab = 'c' , chỉ phát hành một UPDATE duy nhất tuyên bố

UPDATE cdr_data cdt
   SET a = 'B'
 WHERE ab = 'c'

có khả năng có PARALLEL gợi ý rằng sẽ cho phép Oracle cập nhật nhiều phân vùng song song.

Nếu bạn thực sự, thực sự muốn cập nhật từng phân vùng một cách độc lập, sẽ có ý nghĩa hơn nhiều nếu bạn làm như vậy dựa trên các khóa phân vùng. Ví dụ:nếu bảng của bạn có các phân vùng hàng ngày dựa trên ngày

FOR i IN 1 .. <<number of daily partitions>>
LOOP
  UPDATE cdr_data cdt
     SET a = 'B'
   WHERE ab = 'c'
     AND partition_key = <<minimum date>> + i;
END LOOP;

Sử dụng phân vùng partition( <<partition name>> ) cú pháp là phương sách cuối cùng tuyệt đối. Nếu bạn thực sự quyết tâm đi theo con đường đó, bạn cần sử dụng SQL động, xây dựng câu lệnh SQL trong vòng lặp và sử dụng EXECUTE IMMEDIATE hoặc dbms_sql để thực thi nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa pls_integer và binary_integer là gì?

  2. Tải tệp csv khổng lồ vào bảng cơ sở dữ liệu oracle bằng Pyspark

  3. Lưu trữ kết quả của truy vấn trừ với nhiều cột trong một biến trong Oracle PL / SQL

  4. Các giá trị được phân tách bằng dấu phẩy cho hàm IN trong oracle

  5. Làm thế nào để tạo chỉ mục duy nhất trên các trường có giá trị rỗng có thể có (Oracle 11g)?