如何找出mysql中索引的大小(包括主键)

2个常见的答案是使用show_table_statusINFORMATION_SCHEMA.TABLES

但是似乎它们都不计算主键的大小.

我有具有数百万条带有主键且没有其他索引的记录的表,并且上述两种方法都对该表显示Index_length:0.表是INNODB.

解决方法:

您的主键是您的表.在InnoDB中,主键包含实际数据,因此,如果主键包含数据,则为表.

考虑一下.您可以在InnoDB表的聚集索引和辅助索引上获得两种不同类型的索引.区别在于聚集索引包含数据,而二级索引包含索引列和指向数据的指针.因此,二级索引不包含数据,而是包含数据在CLUSTERED索引中的位置.

通常,主键是聚簇索引.将表及其所有值存储在一起,然后将其所有值存储在一起的聚簇索引将效率非常低下.这实际上将使表的大小增加一倍.

因此,当您拥有InnoDB上的主键时,表大小就是主键的大小.在某些数据库系统中,您可以将二级索引作为主键,并将单独的索引作为集群键,但是InnoDB不允许这样做.

请阅读以下链接以获取更多详细信息:

http://dev.mysql.com/doc/refman/5.0/en/innodb-table-and-index.html

http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html

在这些链接中,他们更详细地解释了我上面所说的内容.简单地说,您已经拥有主键索引的大小,因为它就是表的大小.

希望能有所帮助.

上一篇:MySQL NULL值的基数


下一篇:MySQL索引的大小限制是什么意思?