Это то, что я до сих пор придумал.
SELECT
TABLE_SCHEMA,
TABLE_NAME,
SUM(CHARACTER_OCTET_LENGTH) AS total_table_octets,
SUM(CHARACTER_MAXIMUM_LENGTH) AS total_table_chars,
SUM(IF(DATA_TYPE IN('blob', 'text', 'mediumtext', 'longtext', 'mediumblob', 'longblob'), CHARACTER_OCTET_LENGTH, 0)) AS blob_octets,
SUM(IF(DATA_TYPE IN('blob', 'text', 'mediumtext', 'longtext', 'mediumblob', 'longblob'), 0, CHARACTER_OCTET_LENGTH)) AS octets_without_blobs_text
FROM INFORMATION_SCHEMA.COLUMNS
-- WHERE TABLE_SCHEMA IN ('test')
GROUP BY TABLE_SCHEMA, TABLE_NAME
ORDER BY total_table_octets desc
LIMIT 30;