索引

     作用:类似于一本书的目录,提高查询效率。

     原理:给一张表创建一个索引,相当于又创建了一个索引表存储索引信息,会额外占据磁盘空间,因此索引并不适用于所有字段,不是越多越好,索引多了,会影响插入和删除的效率

     不适用:

            1.不经常作为条件用于查询依据的字段不适合

            2.字段修改频率较高的字段不适合

索引是如何提高查询效率的:数据结构

索引采用特殊的数据结构组织可以提高检索效率(尽快找到索引项,通过索引项找到实际数据的存储位置,然后取出数据)

B+树作为索引类型

B树与B+树

       B树:是一个多叉树,降低树的高度提高查询效率

       B+树:也是一个多叉树,降低树的高度提高查询效率

       差别:  B树的数据与索引存储在一起

                    B+树数据与索引分离

                    一次性可以从磁盘中读取出更多索引信息,更利于索引检索。

                    B+树数据顺序存储,在连续查询或范围查询时可以连续IO读取数据,效率较高

 聚簇索引与非聚簇索引

聚簇索引:以主键作为主索引,数据节点在磁盘中顺序进行存储,其他的索引作为辅助索引,其中辅助索引保存的是主键索引的字段值

              适用场景:索引与数据都是顺序存储的,因此中间插入 / 删除需要调整索引的存储结构,非常麻烦

                                索引与数据都是顺序存储的,在连续查询和顺序查询时效率较高

非聚簇索引:主键索引与普通索引区别不大,都是最终索引项中存储数据在磁盘的存放位置,数据节点在磁盘中并非顺序存储

               适用场景:中间插入数据,只需要数据存储到磁盘新的位置,中间调整索引信息即可

                                 因为索引与数据存储顺序不一致,导致在范围查询时,与单个查询效率没有差别都需要一个个去找出来

 数据库操作中的索引类型:

主键索引:一个字段被设置为主键,则默认会为主键字段创建主键索引

唯一键索引:一个字段被设置了唯一约束,则默认创建唯一键索引

外键索引:一个字段被设置了外键约束,则默认创建外键索引

普通索引:并非默认创建索引

     查看索引:show index from tbname\G;

     创建普通索引:create index idx_name on tbname(fields_name);

     删除索引:drop index idx_name on tbname