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

  • 需要对多列进行查询的表 , 例如包含姓名和年龄等多个列的表 。
  • 查询操作较多,更新操作较少的表 。

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

    文章插图
    复合索引
    复合索引是一种非常实用的数据库索引结构 , 可以提高多列查询的效率,减小索引的存储空间 。但是需要注意的是,在创建复合索引时需要根据具体的业务需求进行选择,不合适的复合索引可能会影响查询效率 。
    覆盖索引覆盖索引是一种特殊的索引 , 它包含了所有需要查询的列的数据 , 而不需要进一步的查找操作就可以直接返回查询结果 。这种索引也被称为索引覆盖或索引包含查询 。
    覆盖索引的原理是在索引结构中包含了查询所需要的列,因此数据库不需要再到数据表中查找所需的列 。这样可以减少磁盘I/O操作,从而提高查询效率 , 特别是对于大型的数据表和频繁的查询操作 。
    例如,如果有一个包含姓名和年龄的表,并且需要查询所有男性的姓名和年龄 。可以创建一个复合索引 , 按照性别、姓名和年龄的顺序依次排列 。这样,查询时可以直接使用这个复合索引,并且由于该索引包含了查询所需的姓名和年龄信息,不需要进一步的查找操作就可以直接返回查询结果,从而提高了查询效率 。
    覆盖索引的优点包括:
    1. 可以减少磁盘I/O操作,从而提高查询效率 。
    2. 可以减少CPU和内存的开销,特别是对于大型数据表和频繁的查询操作 。
    覆盖索引的缺点包括:
    1. 只有当需要查询的列都在索引中时 , 才能使用覆盖索引 。否则,仍然需要到数据表中查找所需的列 。
    2. 创建覆盖索引需要占用更多的磁盘空间 。
    覆盖索引的使用场景包括:
    1. 需要频繁进行查询操作的表 。
    2. 查询操作需要使用多个列的信息 。

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

    文章插图
    覆盖索引
    覆盖索引是一种特殊的复合索引,可以减少磁盘I/O操作,提高查询效率 。但是需要注意的是,只有当需要查询的列都在索引中时才能使用覆盖索引,否则仍然需要到数据表中查找所需的列 。因此,在创建覆盖索引时需要根据具体的业务需求进行选择 。
    功能按照功能的角度划分 , 可以分为普通索引、唯一索引、全文索引 。
    普通索引普通索引是数据库中最基本的索引结构,也被称为单列索引或简单索引 。它只包含一个列的值和指向该行的指针,用于加速对该列的单列查询 。可以对表的任意列创建普通索引 , 但通常建议对经常进行查询和排序的列创建索引,例如主键列和外键列等 。
    普通索引的原理是将所需要查询的列作为索引列,按照索引列的值建立索引 。当查询该列时,数据库系统会先在索引结构中进行查找,然后根据索引中的指针到数据表中找到对应的行 。由于普通索引只包含一个列的值和指向该行的指针,因此查询时需要在数据表中找到其他所需的列的值 。
    普通索引的优点包括:
    1. 可以加速单列查询的速度 , 特别是对于大型数据表和频繁的查询操作 。
    2. 可以提高数据的访问效率,从而加快数据的处理速度 。
    普通索引的缺点包括:
    1. 当需要查询的列不在索引列中时,需要进行额外的查找操作,从而降低查询效率 。
    2. 创建普通索引需要占用额外的磁盘空间和内存空间,可能会对写入操作的性能产生一定的影响 。
    普通索引的使用场景包括:
    1. 经常进行查询和排序操作的列 。
    2. 需要经常进行连接操作的表的外键列 。
    3. 数据表中需要保证唯一性的列,如主键列等 。
    普通索引是数据库中最基本的索引结构 , 用于加速对单列查询的速度,提高数据的访问效率 。在创建普通索引时需要根据具体的业务需求进行选择,避免对写入操作的性能产生过大的影响 。


    推荐阅读