加入收藏 | 设为首页 | 会员中心 | 我要投稿 天瑞地安资讯网_保定站长网 (https://www.52baoding.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL-->索引-->什么是索引?

发布时间:2022-09-12 17:02:35 所属栏目:MySql教程 来源:
导读:  1.概念:

  索引是对数据库表中一个或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构

  索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。

  在书籍中,索引允
  1.概念:
 
  索引是对数据库表中一个或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构
 
  索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。
 
  在书籍中,索引允许用户不必翻阅完整本书就能迅速地找到所需要的信息。
 
  在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
 
  2.没有索引查询会发生什么?
 
  以一条SQL为例:SELECT * FROM Employee WHERE Employee_Name = 'Jesus'
 
  在查找名字为Jesus的雇员的过程中,数据库不得不对Employee表中的每一行雇员的名字(Employee_Name)是否为 ‘Jesus’进行判断。由于我们想要得到每一个名字为Jesus的雇员信息。所以,必须一行一行的查找直到最后一行,这就意味数据库不得不检查所有数据才能找到所有名字为Jesus的雇员。这就是所谓的全表扫描。
 
  3.加上索引查询会发生什么变化?
 
  在 Employee_Name这一列上创建一个B-Tree索引。当我们用之前的SQL查找姓名是‘Jesus’的雇员时,不需要再扫描全表。而是用索引查找去查找名字为‘Jesus’的雇员,因为索引已经按照按字母顺序排序。查询一个名字会快很多,因为名字首字母为‘J’的员工都是排列在一起的。
 
  4.索引中存储的是什么?
 
  存储Employee_Name列的值
 
  如果我们在Employee_Name列创建索引,索引只会存储Employee_Name列的值,并进行排序。其它列Employee_Age和Employee_Address上的值并不会存储在这个索引当中。
 
  同时存储了指向表中的相应行的指针。
 
  指针是指一块内存区域, 该内存区域记录的是对硬盘上记录的相应行的数据的引用。因此,索引中除了存储列的值,还存储着一个指向在行数据的索引。
 
  索引中的Employee_Name这列的某个值,可以描述为 (“Jesus”, 0x82829), 0x82829 就是包含 “Jesus”那行数据在硬盘上的地址。
 
  如果没有这个引用,你就只能访问到一个单独的值(“Jesus”),而这样没有意义,因为你不能获取这一行记录的employee的其他值-例如地址(address)和年龄(age)。
 
  5.添加索引付出的代价
 
  添加索引后之所以会快,是因为表依据索引对数据按某种算法(二叉树等)进行排序,所以删除、增加、插入后二叉树要重新排序mysql表索引,导致执行效率降低。
 
  6.总结:
 
  1.索引加快数据库的检索速度
 
  2.索引降低了插入、删除、修改等维护任务的速度(因为要对索引列进行排序)
 
  3.唯一索引可以确保每一行数据的唯一性
 
  4.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
 
  5.索引需要占物理和数据空间
 

(编辑:天瑞地安资讯网_保定站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!