MySQL 十几种索引类型,你都清楚吗?( 二 )


Hash索引的优点包括:

  1. 查询速度快,查询性能稳定 。
  2. 索引构建速度快,适合处理大量数据 。
  3. 支持等值查询,适用于一些需要高速查询的场景 。
Hash索引的缺点包括:
  1. 不支持范围查询、模糊查询和排序操作 。
  2. 哈希函数的选择和设计比较关键,不合适的哈希函数可能导致哈希冲突,进而影响查询效率 。
  3. Hash索引在内存中存储,如果数据过大,可能会导致内存不足的问题 。
Hash索引的使用场景包括:
  1. 需要快速查找具有唯一性的数据的表,例如用户表、商品表等 。
  2. 数据量较大、查询操作较多、更新操作较少的表,例如日志表、统计表等 。

MySQL 十几种索引类型,你都清楚吗?

文章插图
Hash索引
优化从优化的角度分类,可分为前缀索引、复合索引、覆盖索引 。
前缀索引前缀索引是一种基于字符串前缀的数据库索引结构 。在前缀索引中,对于字符串类型的列,可以只对其前几个字符建立索引,而不是对整个字符串进行索引 。这样可以大大减小索引的存储空间,同时也可以提高查询效率 。
例如,对于一个名字列,如果需要进行模糊查询 , 可以只对名字的前几个字符建立索引 , 这样可以有效减小索引的存储空间 , 同时也可以提高查询效率 。一般来说,前缀索引的长度越短,索引的存储空间就越小,但是查询效率也会受到影响 。
前缀索引的优点包括:
  1. 可以减小索引的存储空间,适用于字符串类型的列 。
  2. 可以提高查询效率,特别是在模糊查询等操作中 。
前缀索引的缺点包括:
  1. 可能会出现重复的索引项,进而影响查询效率 。
  2. 前缀长度的选择比较关键,如果长度太短,可能会出现大量的哈希冲突 , 如果长度太长,可能会导致索引的存储空间变大 。
前缀索引的使用场景包括:
  1. 需要对字符串类型的列进行模糊查询、前缀匹配等操作的表 。
  2. 数据量较大、查询操作较多、更新操作较少的表,例如日志表、统计表等 。
前缀索引是一种非常实用的数据库索引结构,可以大大提高查询效率,减小索引的存储空间 。但是需要注意的是,在选择前缀长度时需要根据具体的业务需求进行选择,不合适的前缀长度可能会影响查询效率 。
复合索引复合索引是一种将多个列组合在一起来创建的索引 , 用于优化查询中涉及到多个列的查询效率 。相对于单列索引,复合索引可以更有效地支持多列的查询,提高查询效率 。
在创建复合索引时,可以选择多个列,并按照顺序依次排列 。这样可以使得查询更加高效,因为复合索引的叶子节点存储的是多列的值 , 可以直接满足多列查询的需求,避免了查询时多次进行索引扫描的开销 。
例如,对于一个包含姓名和年龄的表,可以创建一个复合索引,将这三列按照顺序依次排列 。这样,当需要查询姓名、性别和年龄都满足一定条件的记录时,可以直接使用复合索引来完成查询,避免了多次索引扫描的开销,从而提高了查询效率 。
复合索引的优点包括:
  1. 可以提高多列查询的效率,避免多次索引扫描的开销 。
  2. 可以减小索引的存储空间,适用于需要对多个列进行查询的表 。
复合索引的缺点包括:
  1. 复合索引的维护成本比单列索引高 , 因为需要对多个列进行维护 。
  2. 对于一些单列查询,复合索引可能并不适用,因为需要扫描复合索引的叶子节点,而单列索引可以直接定位到需要的记录 。
复合索引的使用场景包括:


    推荐阅读