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

Đếm số hàng trong bảng MySQL với COUNT(*)

Tóm tắt

Dùng COUNT(*) để đếm tổng số hàng trong bảng (kể cả hàng có NULL).

Cú pháp

SELECT COUNT(*) FROM ten_bang;
-- Hoặc có alias
SELECT COUNT(*) AS TotalRows FROM ten_bang;

Ví dụ

1. Tạo bảng

CREATE TABLE CountRowsDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20)
);

2. Chèn dữ liệu (có NULL)

INSERT INTO CountRowsDemo (Name) VALUES
(NULL), ('Sam'), (NULL), ('Mike'), ('David'), (NULL), (NULL), ('Carol');

3. Đếm

SELECT COUNT(*) AS TotalRows FROM CountRowsDemo;

4. Kết quả

+-----------+
| TotalRows |
+-----------+
| 8         |

COUNT(*) vs COUNT(cot) vs COUNT(1)

HàmĐếm gìNULLHiệu năng InnoDB
COUNT(*)Tất cả hàngĐếmNhanh (optimizer chọn index nhỏ nhất)
COUNT(1)Tất cả hàngĐếmGiống COUNT(*)
COUNT(cot)Hàng có cot NOT NULLBỏ quaChậm hơn nếu cần đọc cột
COUNT(DISTINCT cot)Giá trị duy nhất không NULLBỏ quaChậm (cần sort/hash)

Lưu ý InnoDB

  • InnoDB không lưu counter chính xác – COUNT(*) quét index (thường là secondary index nhỏ nhất).
  • Bảng lớn: COUNT(*) chậm – cân nhắc cache counter, trigger maintain counter table, hoặc ước lượng từ SHOW TABLE STATUS (Rows).
  • MyISAM lưu counter chính xác – COUNT(*) tức thì.