如何计算MySQL中索引的大小

我想确定我的索引的大小,他们是主要索引。 这恰好在MySQL集群上,但我不认为这是重要的。

我想这是你要找的。

show table status from [dbname] 

http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

如果你正在使用InnoDB表,你可以从mysql.innodb_index_stats获得单个索引的大小。 “大小”统计包含答案,在页面中,所以你必须乘以它的页面大小, 默认是16K 。

 select database_name, table_name, index_name, stat_value*@@innodb_page_size from mysql.innodb_index_stats where stat_name='size'; 

扩展Vajk Hermecz的答案。
这是如何得到所有的索引大小,以MB为单位,没有PRIMARY(这是表本身),按大小sorting。

 SELECT database_name, table_name, index_name, round(stat_value*@@innodb_page_size/1024/1024, 2) size_in_mb FROM mysql.innodb_index_stats WHERE stat_name = 'size' AND index_name != 'PRIMARY' ORDER BY 4 DESC; 

MyISAM ,每个索引块都是4 KB页面填充到fill_factor索引logging,每个索引logging的key length + 4字节长。

Fill factor通常是2/3

至于InnoDB ,表总是聚集在PRIMARY KEY ,没有单独的PRIMARY KEY索引

我没有使用,但也许MySQL Index Analyzer可能会有所帮助。

使用phpMyAdmin,查看表结构时,底部会有一个Details链接。 一旦你点击它,它会显示你在表上标有空间使用的索引的总大小。

我不认为它会单独显示每个索引。

在这篇文章中确定如何计算索引大小。 http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/