索引是Mysql快速获取数据的一种数据结构。



MySql真正使用的索引的数据结构是B+Tree

B+Tree单个节点的分配空间大小为16KB(大概估算:1170*1170*16≈2000W),所以一般生产环境上Mysql单表存放一般是一千万数据,更多的数据采用分库分表存储(MySql横向扩容是很方便的)。
Mysql用的数据引擎(数据引擎是针对表的,并不是针对数据库):
索引的数据结构为非聚集索引(叶子节点存放主键的指针),索引文件和数据文件分离,查询完后需要回表。该数据引擎不支持数据。
索引的数据结构为聚集索引(主键索引叶子节点会存放整条数据),其他索引(组合索引、唯一索引、普通索引)检索完后,如果索引内包含所需要返回的索引字段,则不需要回表(这里的回表指再次查询主键索引,拿到所需要的的字段,而不是读取数据文件),如果不包含,则存在回表操作,在实际的索引优化中,尽量使用覆盖索引,避免回表操作。
推荐使用自增主键(在新增数据的时候,直接在索引后面追加数据,而不是插入)。如果表中没有主键的时候,数据表会虚拟一个主键,以虚拟的主键生成主键索引。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
您可能感兴趣的文章: