TỒN TẠI
EXISTS nghĩa đen là để kiểm tra sự tồn tại của các tiêu chí được chỉ định. Trong SQL tiêu chuẩn hiện tại, nó sẽ cho phép bạn chỉ định nhiều hơn một tiêu chí để so sánh - IE nếu bạn muốn biết khi nào col_a và col_b đều khớp - điều này làm cho nó mạnh hơn một chút so với mệnh đề IN. MySQL IN hỗ trợ các bộ giá trị, nhưng cú pháp không di động, vì vậy EXISTS là lựa chọn tốt hơn cả về tính dễ đọc và tính di động.
Điều khác cần lưu ý với EXISTS là cách nó hoạt động - EXISTS trả về một boolean và sẽ trả về boolean trong trận đấu đầu tiên. Vì vậy, nếu bạn đang xử lý các bản sao / bội số, EXISTS sẽ thực thi nhanh hơn IN hoặc JOIN, tùy thuộc vào dữ liệu và nhu cầu.
VÀO
IN là đường cú pháp cho mệnh đề OR. Mặc dù nó rất phù hợp, nhưng có một số vấn đề khi xử lý nhiều giá trị cho sự so sánh đó (phía bắc 1.000).
KHÔNG
Toán tử NOT chỉ đảo ngược logic.
Truy vấn con so với Tham gia
Câu thần chú "luôn sử dụng phép nối" là thiếu sót, bởi vì JOIN có nguy cơ làm tăng kết quả tập hợp nếu có nhiều hơn một bản ghi con chống lại một bản ghi mẹ. Có, bạn có thể sử dụng DISTINCT hoặc GROUP BY để giải quyết vấn đề này, nhưng rất có thể điều này mang lại lợi ích về hiệu suất khi sử dụng cuộc tranh luận THAM GIA. Biết dữ liệu của bạn và những gì bạn muốn cho một tập kết quả - đây là chìa khóa để viết SQL hoạt động tốt.
Để nhắc lại việc biết khi nào và tại sao cần biết những gì cần sử dụng - LEFT JOIN IS NULL là danh sách loại trừ nhanh nhất trên MySQL nếu các cột được so sánh KHÔNG có giá trị rỗng , nếu không thì KHÔNG TRONG / KHÔNG TỒN TẠI là lựa chọn tốt hơn.
Tham khảo:
- MySQL:THAM GIA TRÁI / LÀ KHÔNG ĐỦ, KHÔNG VÀO, KHÔNG TỒN TẠI trên các cột có thể rỗng
- MySQL:THAM GIA TRÁI / LÀ KHÔNG ĐỦ, KHÔNG VÀO, KHÔNG TỒN TẠI trên các cột KHÔNG có giá trị rỗng