1. 主键:聚集索引,将数据库表中数据存储为平衡树结构。
无主键时,查询需全表遍历。
有主键时,通过平衡树节点(主键),挨个查询到下一节点,直到找到需查询数据位置。
无主键时,插入/修改/更新数据直接无序排列存储
有主键时,插入/修改/更新数据需保证平衡树结构的正确性,每次修改数据后,需重新梳理平衡树。
2. 索引:非聚集索引,将索引字段组成一个平衡树结构。
查询时:先根据索引字段查询该索引的平衡树,找到对应的索引ID,根据索引ID找到对应的主键ID。再通过主键ID查询主键平衡树中的全部数据。
插入/修改/更新时:需保证平衡树结构的正确性,因此,每次调整数据后,都需要重新梳理平衡树结构。
索引太多时:一个索引对应一个平衡树结构,需复制一份索引字段数据,形成平衡树。导致存储空间变大。
3. 覆盖索引:复合索引或者多字段索引查询。
查询时:无需再通过聚集索引查询。即覆盖索引包含多个字段,其中需查询字段包含在索引中。直接通过非聚集索引平衡树查找到的数据中,包含的需查询字段返回。
注:参考 https://www.cnblogs.com/aspwebchh/p/6652855.html