美文网首页
数据库索引

数据库索引

作者: 25岁学Python | 来源:发表于2020-01-03 16:30 被阅读0次

数据库索引

1.什么是索引?

即搜索引导,索引是一个特殊的数据结构,其存储的关键信息与详细信息的位置对应关系,加速索引

索引的影响:

  1. 正确使用索引才能加速查询;
  2. 索引需要额外的占用数据空间;
  3. 索引的加入,使数据的crud变慢

索引的应用场景:

​ 查询操作较多,写入较少;本质原理是尽可能减小搜索范围


推荐Python大牛在线分享技术 扣qun:855408893

领域:web开发,爬虫,数据分析,数据挖掘,人工智能

零基础到项目实战,7天学习上手做项目

2.磁盘IO

数据库的数据最终存储到了硬盘上,当一次IO时,不光把当前磁盘地址的数据,而是把相邻的数据也都读取到内存缓冲区内,因为局部预读性原理告诉我们,当计算机访问一个地址的数据的时候,与其相邻的数据也会很快被访问到。每一次IO读取的数据我们称之为一页(page)

索引的目的:尽可能减低io次数,算法支持:二分查找法,应该尽可能的将数据量小的字段作为索引

3.索引数据结构

b+树

​ 在b+树中 叶子节点才是存储真实数据的,叶子数量越多,树的层级越高,导致IO次数增加

​ 要避免这个问题,在叶子节点中尽可能的存储更多的数据, 应该将数据量小的字段作为索引

最左匹配原则

当b+树的数据项是复合的数据结构,b+树会按照从左到右的顺序来建立搜索树,也就是说根据sql语句由左至右顺序写入的搜索字段,会优先搜索最左边的字段条件,再匹配下一个字段条件,即索引的最左匹配特性.

聚集索引

聚集索引中包含了所有字段的值,如果拟制定了主键,主键就是聚集索引;
如果没有则找一个非空且唯一的字段作为聚集索引;
如果也没有这样的列,innoDB会在表内自动产生一个聚集索引id,它是自增的
聚集索引中存储了所有的数据

辅助索引

除了聚集索引之外的索引都称之为辅助索引或第二索引,包括 foreign key 与 unique

辅助索引的特点:
其叶子节点保存的是索引数据与所在行的主键值,InnoDB用这个 主键值来从聚集索引中搜查找数据

覆盖查询

覆盖索引指的是需要的数据仅在辅助索引中就能找到:

回表查询

如果要查找的数据在辅助索引中不存在,则需要回到聚集索引中查找,这种现象称之为回表
也就是说搜索字段为非索引字段时,查询搜索字段数据时,先根据索引字段获取主键值,在根据主键值搜索查询的字段.

小结:(判断数据查询的快慢其实是如何正确使用索引)

#为表中某个字段添加索引
create index index_name on table_name(column);
# index_name表示索引名
# table_name表示表名
# column表示字段名

#添加主键
alter table table_name add primary key(column);
  1. 使用占用空间最小的字段来作为索引;
  2. 不要再一行中存储太多的数据,例如小说,视频,如果字段太多可以分表 ;
  3. 尽量使用覆盖查询 ;
  4. 如果字段区分度低(重复度高),建立索引是没有意义,反过来说应该将区分度高的字段作为索引
  5. 不要再等号的左边做运算,例如:select count() from usr where id 3 = 6; 也会遍历所有记录
  6. 模糊匹配中,%尽量不要写在前面
  7. and语句中会自动找一个具的字段优先执行,所以我们应该在and语句中至少包含一个具备索引的字段
  8. or语句要避免使用,如果要用则保证所有字段都有索引才能加速
  9. 联合索引中,顺序应该将区分度最高的放到左边,最低的放右边

相关文章

  • 数据库索引记录

    本文用来记录数据库索引相关内容; 1】数据库索引分为单列索引,组合索引,全文索引,空间索引 2】单列索引:只有一个...

  • 索引,序列,视图

    1、数据库索引索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果...

  • Sql索引优化—转载

    数据库索引使用方式 使用索引是提高数据库查询效率的主要方式,下面从索引结构,索引类型,索引操作,命中索引几个方面来...

  • 数据库 - 索引

    索引 索引 索引的建立对于数据库的高效运行是很重要的。索引可以大大提高数据库的检索速度。 索引分单列索引,组合索引...

  • [Mysql]Mysql索引实现原理及相关优化策略

    数据库索引 数据库索引是什么? A database index is a data structure that...

  • 数据库索引定义和类型

    数据库索引类型及实现方式 1、索引定义 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表...

  • 数据库索引结构总结

    [TOC] 参考 数据库索引数据结构总结 本文摘抄自数据库索引数据结构总结 1. 摘要 数据库索引是数据库中最重要...

  • MySQL 索引

    MySQL 索引 数据库索引的原理:数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表...

  • 『数据库』索引的工作原理

    数据库索引能够提高数据库的查询效率,那么索引到底是什么。 什么是索引 索引本身这个名字已经能回答这个问题了,索引就...

  • PostgreSQL基础知识--索引

    索引是增强数据库性能的常用方法。索引使得数据库在查找和检索数据库的特定行的时候比没有索引快得多。但索引页增加了整个...

网友评论

      本文标题:数据库索引

      本文链接:https://www.haomeiwen.com/subject/ptjtoctx.html