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

(PLSQL) Biểu thức đơn giản nhất để kiểm tra giá trị đã thay đổi trong trình kích hoạt cập nhật trên Oracle là gì?

Tất cả các phương pháp ngắn hơn này đều có một số nhược điểm là chậm, không trực quan, có khả năng xảy ra lỗi (tránh các giá trị ma thuật bất cứ khi nào có thể) và độc quyền hơn các điều kiện bình thường như VÀ / HOẶC / LÀ KHÔNG ĐỦ / KHÔNG ĐỦ.

NVL, DECODE, COALESCE, v.v., có thể đắt hơn bạn nghĩ.

Tôi đã thấy điều này rất nhiều lần trong một số bối cảnh khác nhau, đây là một ví dụ đơn giản:

--Shorter method: Takes about 0.45 seconds
declare
  j number;
begin
  for i in 1 .. 1000000 loop
    j := i;
    if nvl(i <> j, (i is null) <> (j is null)) then
      null;
    end if;
  end loop;
end;
/

--Normal method: Takes about 0.25 seconds
declare
  j number;
begin
  for i in 1 .. 1000000 loop
    j := i;
    if i <> j or (i is null and j is not null) or (i is not null and j is null) then
      null;
    end if;
  end loop;
end;
/

Tôi khuyên bạn nên dành thêm giây để gõ nó theo cách hợp lý. Mã của bạn sẽ trông đẹp hơn và chạy nhanh hơ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. Làm thế nào để bạn nhận giá trị tiếp theo trong một chuỗi thành một biến?

  2. Tôi gặp lỗi ORA-01775:lặp lại chuỗi từ đồng nghĩa khi tôi sử dụng sqlldr

  3. Tăng hiệu suất với Thu thập hàng loạt trong Oracle

  4. Giải mã SQLplus để thực thi các tập lệnh

  5. Cách tìm dự án con của dự án mẹ được truyền trong mệnh đề 'WHERE' và cũng có thể tìm các đối tượng trùng lặp