Có, rất có ý nghĩa. SELECT 1 trả về hằng số 1 cho mỗi hàng thoả mãn điều kiện. Nếu bảng có triệu tỷ hàng, không dùng LIMIT sẽ trả về triệu tỷ dòng "1".
So sánh
Không dùng LIMIT 1
mysql> SELECT 1 FROM Select1AndLimit1Demo; +---+ | 1 | +---+ | 1 | | 1 | | 1 | | 1 | | 1 | | 1 | | 1 | +---+ 7 rows in set (0.00 sec)
Trả về 7 hàng "1" (tương ứng 7 bản ghi).
Có dùng LIMIT 1
mysql> SELECT 1 FROM Select1AndLimit1Demo LIMIT 1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.00 sec)
Chỉ trả về 1 hàng "1".
Khi nào dùng SELECT 1 LIMIT 1?
- Kiểm tra tồn tại (EXISTS pattern):
SELECT 1 FROM bang WHERE dieu_kien LIMIT 1- dừng ngay khi tìm thấy 1 hàng - Tối ưu hiệu suất: Tránh quét toàn bảng, tránh truyền tải dữ liệu không cần thiết
- Trong subquery EXISTS:
WHERE EXISTS (SELECT 1 FROM ... LIMIT 1)
Ví dụ thực tế: Kiểm tra user tồn tại
-- Tốt: Dừng ngay khi tìm thấy SELECT 1 FROM users WHERE email = 'user@example.com' LIMIT 1; -- Kém: Quét toàn bảng (nếu không có index) SELECT COUNT(*) FROM users WHERE email = 'user@example.com';
Lưu ý
SELECT 1nhẹ hơnSELECT *(không đọc dữ liệu cột)- Kết hợp với index trên cột WHERE để cực nhanh
- Trong ứng dụng:
if (resultSet.next()) { exists = true; }