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

Oracle:Xóa từ dưới lên

Khi bạn quan tâm đến thuật toán, câu hỏi của bạn dường như trở nên sôi nổi là sự khác biệt giữa INEXISTS vì hai ví dụ của bạn là cùng một lưu cho IN thay đổi thành EXISTS trong phần xóa khỏi CHILD bảng.

Đã có khá nhiều bài viết về sự khác biệt này trong những năm qua nhưng về bản chất là IN thường được sử dụng khi số lượng trình so sánh ít trong khi EXISTS hiệu quả hơn đối với các truy vấn con trả về số lượng lớn hơn các trình so sánh (đặc biệt nếu các giá trị đó chứa một số lượng lớn các bản sao).

IN phải đánh giá mọi bộ so sánh được trả về trong khi EXISTS hài lòng khi nó gặp trận đấu đầu tiên.

Có những ngoại lệ cho điều này và nếu bạn tìm kiếm chúng thì bạn sẽ tìm thấy chúng nhưng nhìn chung thì điều này có vẻ đúng.

Tom Kyte (VP Oracle) có một câu trả lời rất hay kèm theo lời giải thích ở đây: http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic cũng có một lời giải thích hay ở đây: http://www.techrepublic.com/article/oracle-tip-und hieu-the-difference-between-in-and-exists-in-subqueries/5297080

Hy vọng điều này sẽ giúp ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối với cơ sở dữ liệu oracle 10g thông qua R

  2. Làm thế nào để cấu hình Ruby on Rails với Oracle?

  3. Xây dựng biểu đồ phụ thuộc bảng với truy vấn đệ quy

  4. Oracle:Phép toán số học dẫn đến lỗi tràn

  5. oracle deadlock cha / con và con đã được lập chỉ mục FK