How to Get the Size of a Table in MySQL

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)
How to check data type of primary key ID

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;

References:

https://chartio.com/resources/tutorials/how-to-get-the-size-of-a-table-in-mysql/