Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Nên dùng EXISTS hay IN trong subquery MySQL?


  • EXISTS: Kiểm tra subquery có trả về hàng nào không (boolean).
  • IN: So sánh giá trị với tập hợp giá trị literal.

Quy tắc:

  • Subquery kết quả nhỏ → dùng IN (ưu tiên)
  • Subquery kết quả lớn → dùng EXISTS (hiệu quả hơn)

Ví dụ IN (subquery nhỏ)

mysql> CREATE TABLE InSubQueryDemo (PNumber INT, PName VARCHAR(100));
Query OK, 0 rows affected (0.60 sec)
mysql> INSERT INTO InSubQueryDemo VALUES(1,'Laptop'),(2,'WirelessKeyboard'),(3,'WirelessMouse');
Query OK, 3 rows affected (0.17 sec)
mysql> SELECT * FROM InSubQueryDemo
    -> WHERE PNumber IN (SELECT PNumber FROM InSubQueryDemo WHERE PNumber > 1);
+---------+------------------+
| PNumber | PName            |
+---------+------------------+
| 2       | WirelessKeyboard |
| 3       | WirelessMouse    |
+---------+------------------+
2 rows in set (0.04 sec)