数据库索引详解
2016-05-20 21:53
399 查看
[By GavinHacker]
转载请标明出处:http://www.cnblogs.com/gavinsp/p/5513536.html
关于数据库索引,相信大家用到最多的一定是数据库设计和数据库查询,本篇深度解析一下数据库索引的原理,涉及数据库本身的设计原理,对设计应用的数据库结构,和数据库查询也大有益处。
(一)在了解数据库索引之前,首先了解一下数据库索引的数据结构基础,B+tree
B+tree 是一个n叉树,每个节点有多个叶子节点,一颗B+树包含根节点,内部节点,叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上叶子节点的节点。
B+tree的性质:
1.n棵子tree的节点包含n个关键字,不用来保存数据而是保存数据的索引。
2.所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的非终端结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。
B+tree结构原型图大概如下(引用):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/14/a41cff9bd54618a27260caf592c09a7d.png)
这里还有一篇百度文库文章可以参考 http://wenku.baidu.com/link?url=qniQ1rpN8XOlbs4Vu6pjd_7YzVOGYxmBH0TeHLJTvwQ3Qs9Ig-FJyodXSaeBc3Ap7nC6Rm9qD6We5oJL-j7vnM4Ro5Y5J7yHwCk3asL_q5e
由于B+tree的性质, 它通常被用于数据库和操作系统的文件系统中。NTFS, ReiserFS, NSS, XFS, JFS, ReFS 和BFS等文件系统都在使用B+树作为元数据索引,因为B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度(B+ 树元素自底向上插入)。
(二)数据库索引
数据库索引是用于提高数据库表的数据访问速度的。
数据库索引的特点:
a)避免进行数据库全表的扫描,大多数情况,只需要扫描较少的索引页和数据页,而不是查询所有数据页。而且对于非聚集索引,有时不需要访问数据页即可得到数据。
b)聚集索引可以避免数据插入操作,集中于表的最后一个数据页面。
c)在某些情况下,索引可以避免排序操作。
数据库索引的存储方式,类型,在运行时的操作原理,我制作成了下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/14/7788d599765c8d2551f38bd4457a0cba.png)
关于数据库索引在数据库表设计和应用查询中所涉及的知识会在之后的文章中分享。
转载请标明出处:http://www.cnblogs.com/gavinsp/p/5513536.html
转载请标明出处:http://www.cnblogs.com/gavinsp/p/5513536.html
关于数据库索引,相信大家用到最多的一定是数据库设计和数据库查询,本篇深度解析一下数据库索引的原理,涉及数据库本身的设计原理,对设计应用的数据库结构,和数据库查询也大有益处。
(一)在了解数据库索引之前,首先了解一下数据库索引的数据结构基础,B+tree
B+tree 是一个n叉树,每个节点有多个叶子节点,一颗B+树包含根节点,内部节点,叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上叶子节点的节点。
B+tree的性质:
1.n棵子tree的节点包含n个关键字,不用来保存数据而是保存数据的索引。
2.所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的非终端结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。
B+tree结构原型图大概如下(引用):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/14/a41cff9bd54618a27260caf592c09a7d.png)
这里还有一篇百度文库文章可以参考 http://wenku.baidu.com/link?url=qniQ1rpN8XOlbs4Vu6pjd_7YzVOGYxmBH0TeHLJTvwQ3Qs9Ig-FJyodXSaeBc3Ap7nC6Rm9qD6We5oJL-j7vnM4Ro5Y5J7yHwCk3asL_q5e
由于B+tree的性质, 它通常被用于数据库和操作系统的文件系统中。NTFS, ReiserFS, NSS, XFS, JFS, ReFS 和BFS等文件系统都在使用B+树作为元数据索引,因为B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度(B+ 树元素自底向上插入)。
(二)数据库索引
数据库索引是用于提高数据库表的数据访问速度的。
数据库索引的特点:
a)避免进行数据库全表的扫描,大多数情况,只需要扫描较少的索引页和数据页,而不是查询所有数据页。而且对于非聚集索引,有时不需要访问数据页即可得到数据。
b)聚集索引可以避免数据插入操作,集中于表的最后一个数据页面。
c)在某些情况下,索引可以避免排序操作。
数据库索引的存储方式,类型,在运行时的操作原理,我制作成了下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/14/7788d599765c8d2551f38bd4457a0cba.png)
关于数据库索引在数据库表设计和应用查询中所涉及的知识会在之后的文章中分享。
转载请标明出处:http://www.cnblogs.com/gavinsp/p/5513536.html
相关文章推荐
- SQL Server Concurrency
- Java并发教程(Oracle官方资料)
- SQL SERVER 对权限的授予GRANT、拒绝DENY、收回REVOKE
- MySQL入门——修改数据表2:往指定的表中添加多列数据(字段)
- sql盲注及其相关方法
- BroadleafCommerce使用Oracle
- 如何将oracle数据1000行合并成一行
- MySQL入门——数据表的修改1:往指定表中添加单列(字段)
- Oracle的update语句优化研究 批量更新
- 第107课: Spark Streaming电商广告点击综合案例底层数据层的建模和编码实现(基于MySQL)
- 数据库优化
- Mysql 总结(一)
- 数据库--Orcal--day04
- MySQL入门——查看指定表的索引情况的两种方式
- 适合mongodb的四个免费可视化管理工具
- MySQL入门--显示表结构的两种方式
- MySQL入门——约束简介、外键约束说明、外键约束主表与子表的创建与使用约束案例
- mac 上安装 mysql
- MySQL数据库存储引擎
- Mysql中LAST_INSERT_ID()的函数使用详解