把与数据行相分离的条目作为索引解 决了这个问题,允许我们创建多个索引。此外,索引中的行一般也比数据行短一 些。当你插入或删除 新的值的时候,移动较短的索引值比移动较长数据行的排 序次序更加容易。 不同的 MySQL 存储引擎的索引实现的具体细节信息是不同的。 例如,对于 MyISAM 数据表,该表的数据行保存在一个数据文件中,索引值保存在索引文件 中。一个数据表上可能有多个索引,但是它们都被存储在同一个索引 文件中。 索引文件中的每个索引都包含一个排序的键记录(它用于快速地访问数据文件) 数组。 与此形成对照的是,BDB 和 InnoDB 存 储引擎没有使用这种方法来分离数据 行和索引值,尽管它们也把索引作为排序后的值集合进行操作。在默认情况下, BDB 引擎使用单个文件存储数据和索引值。 InnoDB 使用单个数据表空间 (tablespace),在表空间中管理所有 InnoDB 表的数据和索引存储。我们可以 把 InnoDB 配置为每个表都在 自己的表空间中创建,但是即使是这样,数据表的 数据和索引也存储在同一个表空间文件中。 前面的讨论描述了单个表查询环境下的索引的优点,在这种情 况下,通过减少 对整个表的扫描,使用索引明显地提高了搜索的速度。