Sử dụng information_schema.TABLES để lấy thông tin dung lượng bảng (data + index) và sắp xếp.
Truy vấn:
SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH, ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2) AS "MB Size" FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'ten_database' ORDER BY (DATA_LENGTH + INDEX_LENGTH) ASC;
Giải thích:
DATA_LENGTH: dung lượng dữ liệu (byte)INDEX_LENGTH: dung lượng chỉ mục (byte)- Tổng / 1024 / 1024 = MB, làm tròn 2 chữ số thập phân
- Sắp xếp tăng dần (ASC) từ nhỏ đến lớn
Ví dụ với database test (rút gọn output):
mysql> SELECT ... FROM information_schema.TABLES WHERE TABLE_SCHEMA = "test" ORDER BY ... ASC;
+------------------------------------+------------+-------------+--------------+---------+ | TABLE_NAME | TABLE_ROWS | DATA_LENGTH | INDEX_LENGTH | MB Size | +------------------------------------+------------+-------------+--------------+---------+ | empinfoview | 0 | 0 | 0 | 0.00 | | lookuptable | 0 | 0 | 0 | 0.00 | | ... | ... | ... | ... | ... | | student | 2 | 16384 | 32768 | 0.05 | +------------------------------------+------------+-------------+--------------+---------+
Các view có dung lượng 0. Bảng lớn nhất hiển thị cuối. Dùng DESC để sắp xếp giảm dần (lớn nhất trước).