索引
作用:类似于一本书的目录,提高查询效率。
原理:给一张表创建一个索引,相当于又创建了一个索引表存储索引信息,会额外占据磁盘空间,因此索引并不适用于所有字段,不是越多越好,索引多了,会影响插入和删除的效率
不适用:
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