Tóm tắt
Dùng LIMIT 1 thay vì COUNT(*) để kiểm tra bảng có rỗng không – nhanh hơn vì dừng sau khi tìm thấy hàng đầu tiên.
Cú pháp khuyến nghị
SELECT 1 AS Output FROM ten_bang LIMIT 1;
- Trả về 1 hàng (giá trị 1) → bảng không rỗng.
- Trả về 0 hàng → bảng rỗng.
Tại sao LIMIT tốt hơn COUNT(*)?
COUNT(*)quét toàn bộ index/bảng (trừ MyISAM có counter tức thì).LIMIT 1dừng ngay khi thấy hàng đầu tiên – O(1) thay vì O(N).- Tránh
LEAST(COUNT(*))– vẫn buộc quét index.
Ví dụ
1. Tạo bảng và chèn dữ liệu
CREATE TABLE ReturnDemo (Id INT, Name VARCHAR(10));
INSERT INTO ReturnDemo VALUES (100,'Larry'), (101,'Bob'), (102,'Sam');
2. Kiểm tra
SELECT 1 AS Output FROM ReturnDemo LIMIT 1;
3. Kết quả
+--------+
| Output |
+--------+
| 1 |
+--------+
Các cách khác
EXISTS (SELECT 1 FROM bang)– trả về 1/0, tối ưu như LIMIT.SELECT COUNT(*) FROM bang– chỉ dùng khi cần số lượng chính xác.SELECT 1 FROM bang WHERE 1=1 LIMIT 1– tương tự.
Khi nào dùng COUNT(*)?
- Cần biết chính xác số hàng.
- Bảng MyISAM (có counter tức thì).
- Bảng InnoDB với
innodb_stats_persistent=OFFvà thống kê cập nhật.