| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 数据库索引 -> 正文阅读 |
|
[大数据]数据库索引 |
MySQL官方定义: 索引是帮助MySQL高效获取数据的有序数据结构。在数据库之外,数据库系统还维护着满足特定查找算法的数据结构,这样的数据结构已某种方式指向数据,这样就可在这些数据结构上实现高级查找算法,这种数据结构叫做索引。 示意图: 左边是数据表,一共两列七条记录,最左边的是数据记录的物理地址。为了加快Col2查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据的记录物理地址的指针,这样就可以运用二叉查找快速获取到相应的数据。 索引本身也很大,不会全部存储到内存中,索引往往以索引文件的形式存储在磁盘上,索引是数据库中用来提高性能的最常用的工具。
索引优略势优势:
劣势:
常见的索引索引是在MySQL的存储引擎层实现的,并不是在服务器层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的所有类型。 MySQL提供了四种索引:
我们常说的索引,如果没有特别指明,都是指B+树(多路搜索树,并不一定时二叉的)结构组织的索引。其中聚集索引,复合索引,前缀索引,唯一索引默认都是使用B+Tree 索引。 索引结构1 BTree BTree又叫多路平衡搜索树,一颗x叉的BTree特性如下:
这就是个5叉的BTree,BTree树和二叉树相比,查询数据的效率更高,因为对于相同的数据量来说,BTree的层级结构比二叉树小,因此搜索速度快。所以不是所有的二叉树都比BTree搜索速度更快。 2 B+Tree B+Tree 是B树的变种,查询性能比B树更高。x阶的B+Tree特征:
B+树的优势1 更高效率的单元查找。 第一次磁盘IO 第二次磁盘IO 第三次IO 貌似这个过程看来,没有与B树的查询过程没有什么区别,但实际上有两点不一样:
2 叶子节点形成有顺链表,范围查找性能更优 B树范围查找3-8的过程 先查找3 再查找4、5、6、7、8,中间过程省略,直接到8的查找 这里查找的范围跨度越大,则磁盘IO的次数越多,性能越差。 ? B+树范围查找3-11的过程 先从上到下找到元素3,然后通过链表指针,依次遍历查找元素568911;如此一来,就不用向B树那样一个个元素进行查找! B+树优点总结:
MySQL中的B+TreeMySQL索引数据结构对经典的B+Tree进行了优化,在原有的B+Tree的基础上,增加一个指向相邻叶子节点的链表指针。就形成了带有顺序指针的B+Tree,提高了区间访问的性能! MySQL中的 B+Tree 索引结构示意图: 索引分类
指向相邻叶子节点的链表指针:提高区间风闻的性能! 叶子节点形成链表,便于范围查询! 索引设计原则索引的设计可以遵循一些已有的原则,创建索引的时候尽量考虑符合这些原则,便于提升索引的使用效率,更高效的使用索引。
所以具体的SQL语句,添加何时的索引。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 0:53:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |