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

Kiểm tra bảng rỗng hiệu quả: COUNT(*) vs LIMIT trong MySQL

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 1 dừ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=OFF và thống kê cập nhật.