Cú pháp truy vấn
Sử dụng information_schema.TABLES để lấy số hàng ước lượng của mọi bảng:
SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'ten_database';
Ví dụ với database "test"
mysql> SELECT table_name, table_rows -> FROM INFORMATION_SCHEMA.TABLES -> WHERE TABLE_SCHEMA = 'test';
Kết quả mẫu (rút gọn)
+------------------------------------+------------+ | TABLE_NAME | TABLE_ROWS | +------------------------------------+------------+ | _student_trackerdemo | 0 | | addingcurrencysymboldemo | 4 | | addingdaysdemo | 8 | | agecalculatesdemo | 4 | | ... | ... | | employeetable | 2 | | monthdemo | 12 | | generatingnumbersdemo | 10 | +------------------------------------+------------+ 243 rows in set (0.86 sec)
Lưu ý quan trọng về TABLE_ROWS
⚠️ TABLE_ROWS là giá trị ước lượng!
- Đối với InnoDB: Chỉ là ước lượng, có thể sai lệch
- Đối với MyISAM: Chính xác
- Để có số chính xác 100%:
SELECT COUNT(*) FROM ten_bang
Truy vấn đếm chính xác cho tất cả bảng
Nếu cần số chính xác, sử dụng dynamic SQL:
SELECT CONCAT('SELECT "', table_name, '" AS table_name, COUNT(*) AS exact_count FROM ', table_name, ';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'ten_database';
Kết hợp với các thông tin khác
SELECT
TABLE_NAME,
TABLE_ROWS,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS size_mb,
ENGINE,
TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'ten_database'
ORDER BY TABLE_ROWS DESC;
Khi nào dùng phương pháp nào?
- TABLE_ROWS: Kiểm tra nhanh, báo cáo, monitoring
- COUNT(*): Báo cáo chính xác, audit, migration