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

Hành vi kỳ lạ của tham gia bên ngoài đầy đủ trong Oracle - làm thế nào nó có thể được giải thích?

Trình tối ưu hóa không nên chọn sử dụng chỉ mục trên EMP.DEPT_ID trong truy vấn thứ hai, vì nó có thể có giá trị NULL. Đây là nguyên nhân khiến nó loại trừ một hàng khỏi kết quả.

Lời giải thích không lỗi duy nhất mà tôi có thể nghĩ đến vào lúc này là bằng cách nào đó bạn đã tạo ra các ràng buộc trong chế độ BẬT TỰ TIN để trình tối ưu hóa nghĩ rằng trường không thể chứa NULL. Trong trường hợp này, sẽ đúng nếu sử dụng chỉ mục cung cấp thông tin không chính xác trong các ràng buộc. Tuy nhiên, có vẻ như tùy chọn RELY không khả dụng cho các ràng buộc NOT NULL, vì vậy tôi không hiểu đây có thể là vấn đề như thế nào. Tuy nhiên, hãy xem xét cẩn thận tất cả các ràng buộc trên các bảng.

Ngoài ra, có một số lỗi đáng ngạc nhiên trên trang web của Oracle liên quan đến kết quả sai từ các phép nối bên ngoài đầy đủ. Bạn có thể đang đánh một trong số họ. Trong một vài trường hợp như vậy, cách giải quyết là vô hiệu hóa các phép nối bên ngoài đầy đủ "gốc", bạn có thể thực hiện điều này cho phiên hiện tại của mình bằng câu lệnh sau:

alter session set "_optimizer_native_full_outer_join"=off; 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sao chép dữ liệu từ cơ sở dữ liệu / bảng này sang cơ sở dữ liệu / bảng khác

  2. Làm thế nào để tạo cột tăng dần?

  3. hiển thị tên cột của bảng Oracle

  4. Xuất Bảng Oracle sang Trang tính Excel

  5. Định dạng chuỗi URL để kết nối với cơ sở dữ liệu Oracle với JDBC