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

Kiểm tra tồn tại giá trị trong MySQL với SELECT 1

Kiểm tra sự tồn tại hiệu quả với SELECT 1

Thay vì SELECT * hoặc SELECT column, dùng SELECT 1 để kiểm tra xem hàng thỏa mãn điều kiện có tồn tại hay không - nhanh hơn, ít I/O hơn, đủ để ứng dụng kiểm tra boolean (có/không).

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(40),
    StudentAge INT
);
mysql> INSERT INTO DemoTable (StudentName, StudentAge) VALUES
    ('Chris', 21), ('David', 20), ('Bob', 22), ('Tom', 19);

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
| 1         | Chris       | 21         |
| 2         | David       | 20         |
| 3         | Bob         | 22         |
| 4         | Tom         | 19         |
+-----------+-------------+------------+

3. Truy vấn: Kiểm tra tồn tại 'Bob'

mysql> SELECT 1 FROM DemoTable WHERE StudentName = 'Bob';

4. Kết quả

+---+
| 1 |
+---+
| 1 |
+---+
1 row in set

Giải thích:

  • Trả về 1 hàng chứa giá trị 1 → Tồn tại
  • Trả về Empty set (0 rows) → Không tồn tại
  • Chỉ cần 1 hàng (có thể thêm LIMIT 1)

Ứng dụng trong ứng dụng (PHP/Python/Java):

-- PHP PDO
$stmt = $pdo->prepare("SELECT 1 FROM users WHERE email = ? LIMIT 1");
$stmt->execute([$email]);
$exists = $stmt->fetchColumn(); // false hoặc '1'

So sánh hiệu năng:

QueryĐọc cộtNetworkDùng index
SELECT 1 FROM t WHERE ...Không (chỉ index)Tối thiểuCó
SELECT * FROM t WHERE ...Tất cả cộtLớnCó
SELECT COUNT(*) FROM t WHERE ...Không (chỉ index)NhỏCó
EXISTS (SELECT 1 FROM t WHERE ...)KhôngTối thiểuCó

Best practice: SELECT 1 FROM table WHERE condition LIMIT 1 hoặc EXISTS (SELECT 1 FROM table WHERE condition).