MySQL-->索引-->什么是索引?
发布时间:2022-09-12 17:02:35 所属栏目:MySql教程 来源:
导读: 1.概念:
索引是对数据库表中一个或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构
索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。
在书籍中,索引允
索引是对数据库表中一个或多个列的值进行排序的结构,是帮助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.索引需要占物理和数据空间 (编辑:天瑞地安资讯网_保定站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

