索引的类型和常见的索引

索引的类型(索引有很多种类型,在mysql中,并没有统一的索引标准,不同的存储引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引)

       1、B-Tree索引   大多数MySQL引擎都支持这种索引,对索引列是顺序组织存储的,很适合查找范围数据。如:像找出所有以I到K开头的名字“这样的查找效率会非常高。适用于全键值,键值范围或键前缀(最左前缀的查找)查找。

        2、哈希索引    哈希索引只包含哈希值和行指针,而不存储字段值。

                                             无法用于排序,不是按照索引值顺序存储的

                                              不支持部分索引列匹配查找(哈希索引是使用索引列的全部内容来计算哈希值得)

                                               只支持等值比较查询,包括=、IN()、<=>

                                                不支持任何范围查询

       3、空间数据索引(R-Tree)

              MyISAM索引支持空间索引。 无须前缀查询,会从所有维度索引数据

        4、全文索引

         5、其他索引类别

               (第三方的存储引擎来存储索引,如:TokuDB 分形树索引)




常见的索引有:

      1. 普通索引(无限制)

        2.唯一索引

                  主键就是唯一索引,但是唯一索引不一定是主键,唯一索引可以为空,但是空值只能有一个,主键不能为空。
普通唯一索引:单个字段上建立唯一索引,需要此字段所在的列上不能有重复的值,属于二级索引。

复合唯一索引:多个字段上联合建立唯一索引,属于二级索引。(参考了:https://www.jianshu.com/p/e1dce41a6b2b

         3.单列索引

         4.多列索引(前缀)

         5.覆盖索引 : 一个索引包含(或者说覆盖)所有需要查询的字段的值 

         6.聚族索引

              InnoDB 主键使用的是聚簇索引,MyISAM 不管是主键索引,还是二级索引使用的都是非聚簇索引。

              聚族索引不是一种单独的索引类型,而是一种数据存储方式。InnoDB的聚族索引在同一结构中保存了B-Tree索引和数据行。数据行存放在索引的叶子页中,术语"聚族"表示数据行和相邻的键值紧凑地存储在一起。存储引擎负责实现索引(不是所有的存储引擎都支持聚族索引)。

              InnoDB将通过主键聚集数据,如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚族索引。

               优点:1、数据访问更快,聚族索引将索引和数据保存在同一个B-Tree中,因此比在非聚族索引中获取数据更快。

                       2、使用覆盖索引扫描的查询可以直接使用页节点的主键值。

                缺点: 1.插入速度严重依赖于插入顺序。按照主键的顺序插入是加载数据到InnoDB表中速度最快的方式。但如果不是按主键插入,最好使用optimize table命令重新组织表

                           2.更新聚族索引列的代价很高。因为会强制InnoDB将每个被更新的行移动到新的位置。

                           3..基于聚族索引的表在插入新行,或者主键被更新导致需要移动行的时候,可能面临“”页分页“的问题。

当行的主键值要求必须将这一行插入到某个已满的页中时,存储引擎会将改页分页成两个页来容纳该行,这就是一次页分页操作,会导致表占用更多的磁盘空间。聚族索引可能导致全表扫描变慢,尤其是行比较稀疏或者是页分裂存储不连续的时候。

                           二级索引叶子节点保存的不是指向行的物理位置的指针,而是行的主键值。

        

         7.全文索引

                    InnoDB 主键使用的是聚簇索引,MyISAM 不管是主键索引,还是二级索引使用的都是非聚簇索引。




版权声明:本文为博主原创文章,未经博主允许不得转载。

猜你喜欢

转载自blog.csdn.net/jacabe/article/details/79422496