To Nha Notes | Aug. 23, 2022, 1:52 p.m.
SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024) AS `Size (GB)`, TABLE_ROWS AS RECORDS FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
The results, as expected, are now:
+-------+-----------+
| Table | Size (GB) |
+-------+-----------+
| book | 267 |
+-------+-----------+
1 row in set (0.00 sec)
SELECT
DISTINCT
a.TABLE_NAME AS `Table`,
b.DATA_TYPE AS `id type`,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024) AS `Size (GB)`,
a.TABLE_ROWS AS RECORDS
FROM
information_schema.TABLES a
LEFT JOIN INFORMATION_SCHEMA.COLUMNS b
on a.TABLE_NAME = b.TABLE_NAME
WHERE
a.TABLE_SCHEMA = "<DB_NAME>"
AND b.COLUMN_NAME = 'id'
ORDER BY
(DATA_LENGTH + INDEX_LENGTH)
DESC;
https://chartio.com/resources/tutorials/how-to-get-the-size-of-a-table-in-mysql/