索引的作用主要体现在以下几个方面:
1.提高查询效率:索引可以大大减少数据库的扫描操作,通过直接定位到需要查询的数据位置,提高查询效率
2.加速排序:索引可以帮助数据库在进行排序操作时,快速定位到排序的数据位置,提高排序的效率。
3.加速连接操作:当数据库进行连接操作时,索引可以帮助快速定位到连接的数据,提高连接的效率
4.保证数据的唯一性:通过在索引上添加唯一约束,可以保证数据的唯一性,避免出现重复数据.
索引的分类:
MySQL中常见的索引类型包括主键索引、唯一索引、普通索引和全文索引等
1.主键索引:主键索引是一种特殊的唯一索引,它要求索引键的值唯一且不能为空。主键索引在数据库中起到唯一标识数据的作用,可以保证数据的唯一性
2.唯一索引:唯一索引要求索引键的值唯一,但可以为空,唯一索引可以提高查询的效率,同时保证数据的唯一性。
3.普通索引:普通索引是最基本的索引类型,它没有任何限制,可以包含重复的值和空值。普通索引可以提高查询的效率,但不能保证数据的唯一性。
4.全文索引:全文索引是一种特殊的索引类型,它可以用于全文搜索。全文索引可以提高搜索的效率,适用于对文本内容进行查询的场景。
MySQL中常用的索引底层数据结构:
主要有B树和哈希索引。B树是一种多路搜索树,能够保持数据有序,适合范围查找;哈希索引则是通过哈希函数将索引列的值映射到索引表中,适合等值查找
回表是指通过查询索引获得记录的主键,然后再通过主键查询数据表获取完整记录的过程。在使用索引查询时,如果查询的字段不在索引中,那么查询结果只包含索引字段,需要通过查询结果中的主键再次查询数据表才能得到完整记录。这个过程就被称为回表。回表会增加查询的时间和资源消耗,应尽量避免。
索引下推是一种优化技术,它将 WHERE 子句中的条件下推到索引层级,减少数据读取的行数,从而提高查询效率。在 MySQL 中,如果索引中包含 WHERE 子句中的所有条件,就可以使用索引下推来优化查询。覆盖索引是指索引能够覆盖查询的所有字段,查询结果可以直接从索引中获得,而不需要回表查询数据表。当查询需要返回的字段都被包含在索引中时,可以使用覆盖索引来避免回表查询,从而提高查询效率。