索引是关系数据库中对某一列或多个列的值进行预排序的数据结构;通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。
聚集索引和辅助索引
- 聚集索引是指数据库表行中数据的物理顺序与搜索码索引顺序相同;一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况
- 辅助索引则是索引项指向一个或多个匹配数据记录,并且辅助索引必须是稠密索引;辅助索引能偶提高非主码的查询效率
稠密索引和稀疏索引
- 稠密索引:每个数据记录都有索引项指向,而在稠密非聚集索引中索引项会指向一条或多条数据记录
- 稀疏索引:索引项指向部分数据记录,并且只有聚集索引才能使用稀疏索引
什么是覆盖索引?
- 如果数据库索引包括被查询字段的值,则被称为覆盖索引;通过这种方式能够减少数据访问量从而提高查询效率,而不需要进行回表操作。
联合索引
- 两列或多列上的索引被成为联合索引,并且联合索引符合最左匹配原则;所以我们通常将使用最频繁的字段放在最左侧。
延迟关联
- 对于延迟关联这一SQL优化方式,比较常见是排序+分页查询,特别是起始记录比较大的时候;这时候可以先通过覆盖索引返回需要的主键,然后再通过索引获取对应的表数据。