Giải thích kế hoạch
sẽ chỉ cho bạn lý do chính xác tại sao bạn nên sử dụng Exists . Thông thường câu hỏi đi kèm Tồn tại so với Đếm (*) . Tồn tại nhanh hơn. Tại sao?
-
Đối với các thách thức do NULL đưa ra:khi truy vấn con trả về
Null, đối với IN toàn bộ truy vấn trở thànhNull. Vì vậy, bạn cần phải xử lý điều đó. Nhưng sử dụngExist, nó chỉ là mộtfalse. Dễ dàng hơn để đối phó. Đơn giản chỉ cầnINkhông thể so sánh bất cứ thứ gì vớiNullnhưngTồn tạicó thể. -
ví dụ.
Tồn tại (Chọn * từ bảng của bạn trong đó bla ='blabla');bạn nhận được true / false vào thời điểm một lần truy cập được tìm thấy / khớp . -
Trong trường hợp này
INloại chiếm vị trí củaCount (*)để chọn TẤT CẢ khớp các hàng dựa trênWHEREbởi vì nó so sánh tất cả các giá trị.
Nhưng cũng đừng quên điều này:
-
TỒN TẠIthực thi ở tốc độ cao đối vớiIN:khi kết quả truy vấn con rất lớn. -
INđi trướcEXISTS:khi kết quả truy vấn con rất nhỏ.
Tham khảo để biết thêm chi tiết: