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

Đếm số hàng của tất cả bảng trong database MySQL


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