MySQL中不同存储引擎的索引的实现方式

对于不同的 MySQL 存储引擎,索引的具体实现细节也有所不同。

  1. 对于 MyISAM 表,其数据行保存在数据文件中,而索引值则保存在索引文件里。一个表可以有多个索引,但它们都保存在同一个索引文件里。索引文件里的每一个索引都由一组有序的关键字行构成,这个组中的关键字行主要用于快速访问数据文件。
  2. InnoDB 存储引擎没有按照上面的方法将行和索引值分开放置,尽管它也是把索引值当作是一组有序值。默认情况下,InnoDB 存储引擎只使用一个表空间,在这个表空间的内部,管理着所有 InnoDB 表的数据存储和索引存储。可以通过配置 InnoDB,让它创建的每个表都有自己的表空间,但即使如此,给定表的数据和索引也同样保存在同一个表空间文件里。