Find the Largest Table in a MySQL Database

SELECT CONCAT(table_schema, '.', table_name),
CONCAT(ROUND(table_rows / 1000000, 2), 'M')                                    rows,
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G')                    DATA,
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G')                   idx,
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size,
ROUND(index_length / data_length, 2)                                           idxfrac
FROM   information_schema.TABLES
WHERE table_schema='database_name'
ORDER  BY data_length + index_length DESC
LIMIT  10;

Excluding the WHERE clause for table_schema would display the largest tables across all databases.

--
Source:
http://www.mysqlperformanceblog.com/2008/02/04/finding-out-largest-table...