查询MySQL表的大小及索引大小可以通过系统库information_schema中的TABLES表来实现。
该表常用的一些字段:
TABLE_SCHEMA:数据库名
TABLE_NAME:表名
ENGINE:所使用的存储引擎
TABLES_ROWS:记录行数
DATA_LENGTH:表大小
INDEX_LENGTH:索引大小
1、可以查询数据库的数据行数、表空间、索引空间,如下,将[数据库名]替换成你自己的数据库名即可。
SELECT TABLE_SCHEMA AS \'库名\',
CONCAT(ROUND(TABLE_ROWS/10000, 2), \' 万行\') AS \'行数\',
CONCAT(ROUND(SUM(DATA_LENGTH)/(1024*1024*1024), 2), \' GB\') AS \'表空间\',
CONCAT(ROUND(SUM(INDEX_LENGTH)/(1024*1024*1024), 2), \' GB\') AS \'索引空间\',
CONCAT(ROUND(SUM(DATA_LENGTH+INDEX_LENGTH)/(1024*1024*1024),2),\' GB\') AS\'总空间\'
FROM information_schema.TABLES WHERE TABLE_SCHEMA = [数据库名];
2、当然也可以不汇总,查询下各个表的情况进行分析,如下,将[数据库名]替换成你自己的数据库名即可。
SELECT TABLE_NAME AS \'表名\',
CONCAT(ROUND(TABLE_ROWS/10000, 2), \' 万行\') AS \'行数\',
CONCAT(ROUND(DATA_LENGTH/(1024*1024*1024), 2), \' GB\') AS \'表空间\',
CONCAT(ROUND(INDEX_LENGTH/(1024*1024*1024), 2), \' GB\') AS \'索引空间\',
CONCAT(ROUND((DATA_LENGTH+INDEX_LENGTH)/(1024*1024*1024),2),\' GB\') AS\'总空间\'
FROM information_schema.TABLES WHERE TABLE_SCHEMA = [数据库名] ORDER BY TABLE_ROWS DESC;