mysql 深胡_Mysql胡说八道

mysql索引

今天看了一些关于MySQL相关的东西,来做一些碎碎念,写这些可能只是觉得自己看东西老爱忘23333.

先来看一组MySQL数据,如图我们要查看最后id=11的数据,如果我们不加索引的话会怎样呢?

他会一条一条的比对,直到最后一条,加了索引他就不用一条一条比对了吗?

其实也不是这样理解的。

我们先来看他如何进行一条一条比对,我们数据库中的数据是存储在硬盘中的,这是一种持久化的数据,不同于我们

程序中的数据(程序中的数据是易失的,程序结束就没了,这其实就是我们内存的特性),如果我们需要比对,第一

步要做的是把数据库硬盘中的数据加载进内存,例如比对开始,第一条数据,id=1从硬盘加载进内存,与我们程序中

的sql语句(select id from user where id=11)进行比对,发现id不等于11,于是接着把id=2加载进内存,如此

下去,直到id=11,程序结束。此过程我们可以发现如果我们要查询id=11

要进行11次把数据从硬盘加载进内存的操作

这就是我们常说的磁盘IO操作,磁盘IO操作非常耗费时间的,仅仅这样一个查询就要11次IO操作……

我还有个不成熟的例子,我们大家都有那种一个软件半天才打开的经历吧,这就是一个把硬盘数据加载进内存的过程,

也就是磁盘IO操作,类比于我们现在这个表中的查询,如果要进行11次这样的操作,有点吓人是不是。

957015a4cc297e34d8c104144e0db2a5.png

那么我们如果可以在插入数据的时候同时维护一棵二叉排序树,这样我们在查找的时候是不是可以节省不少时间?

二叉排序树就是一棵左儿子小于本身,右儿子大于本身的二叉树,不详细说了。这样我们就可以从查找O(n)的

复杂度,降低到O(lgn)。但是又有问题了,如图所示

76e109987c9ccd17b9147d44ab831b05.png

事实上这样的二叉排序树非常常见,像不像我们的链表?链表相比于数组的坏处就是查找麻烦,这种退化为链表的

二叉排序树已经没有查找的优越性了。由此人们又研究出来AVL排序树,叫法很多,平衡树啊,AVL查找树啊都是这个。

如图

cc18dda6736461acf8ebc0c8a50b36a3.png

平衡树的确很好,但是还是有问题,平衡树要求叶子节点的高度差不能大于1,这个要求其实过于苛刻,事实上随便一个

操作都能打破这种平衡,平衡树就需要左旋右旋来进行矫正,但是左旋右旋操作也是非常耗费时间的,所以就有了红黑树

红黑树先比较于平衡树,最大的区别就在于他放宽了进行左旋右旋的条件。

但是我们知道MySQL索引底层用的也不是红黑树,其实是B+树,那么B+树又改进了红黑树什么特性呢,红黑树说到底还是

一种二叉树,在我们数据量足够大的情况下,二叉条件下树的深度还是非常大的,避免不了进行很多次磁盘IO,B+树简单

来说就是一种多叉排序树,将深度转换为宽度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3.1.1_python 3.1.1 with--enable shared:将不会构建任何扩展

摘要:使用--enable shared在RHEL 5.3 64位上构建Python3.1无法编译所有扩展。建筑“正常”工作良好,没有任何问题。请注意这个问题似乎模糊了编程和系统管理之间的界限。但是,我相信因为它必须直接处理操作系统问题和编程问题,所以我会在stackoverflow和serverfault上交叉发布它…

java的case_java中的switch case语句使用详解

java中的switch case语句switch-case语句格式如下:switch(变量){case 变量值1://;break;case 变量值2://...;break;...case default://...;break;}swtich()变量类型只能是int、short、char、byte和enum类型(JDK 1.7 之后,类型也可以是String了)。当进行c…

java public main_实例分析Java中public static void main(String args[])是什么意思

本文实例讲述了Java中public static void main(String args[])的来龙去脉。分享给大家供大家参考,具体如下:public static void main(String[] args)这绝对不是凭空想出来的,也不是没有道理的死规定,而是java程序执行的需要。jvm在…

打印矩阵 java_【Java】 剑指offer(29) 顺时针打印矩阵

本文参考自《剑指offer》一书,代码采用Java语言。题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。思路每次打印矩阵最外面的一圈(用方法printMatrixInCircle()表示),每次都是这个操作,所以可以采用递归。每次…

具有JDK 12精简数字格式的自定义精简数字模式

帖子“ 紧凑数字格式到JDK 12 ”已经成为java subreddit线程上讨论的主题 。 在那个线程中表达的与紧凑数字格式表示有关的问题涉及显示的精度数字和显示的紧凑数字模式。 可以通过使用CompactNumberFormat.setMinimumFractionDigits(int)来解决精度数字问题,该方法…

【渝粤题库】陕西师范大学100071教育学作业(高起本)

单选题 1、中小学为实现教育目标,与课堂教学相配合,在课堂教学以外对学生身心实施多种影响的正规教育活动,就是( ) A、课堂作业 B、课外作业 C课外活动 D、课外参观 2、学生的行为规范、公民意识、劳动态度等属于( ) A、心理素质 B、生理素质…

java 面试for循环_一个基础的for循环面试题

下面的这段程序主要考察的就是for循环的基础,输出什么??????1、 public class test {2、3、 /**4、 * param args5、 */6、 public static void main(String[] args) {7、 // TODO Auto-generat…

java浏览文件夹_一个用java实现简单的文件浏览器

[java]代码库import java.awt.*;import java.awt.event.*;import java.net.URL;import javax.swing.*;//文件浏览器public class HTTPBrowserDemo extends JFrame {private static final long serialVersionUID -5794029080886644211L;JTextField jtfAddress; // 输入文件地址…

【渝粤题库】陕西师范大学151203 初级会计学作业(笔试题型)

《初级会计学》作业 一、单项选择 1.下列会计要素,属于静态要素的有 ( ) A.负债 B.收入 C.费用 D.利润 2. 下列项目中,属于流动负债的有 ( &#…

【渝粤题库】陕西师范大学152208 公共危机管理

陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 陕西师范大学 内 部 题 库 教育 &#xf…

【渝粤题库】陕西师范大学164109人力资源管理 作业(高起专)

《人力资源管理》作业 一、单选题 在企业成长过程中,( )因素发挥着核心作用。 A 技术 B资金 C市场 D人力资源现代人力资源管理强调( )。 A 以 “事为中心” B 将员工视为负担与成本 C强调“控制” D强调对人的开发和管…

java快速排序算法_JAVA版排序算法之快速排序示例

本文实例讲述了JAVA快速排序实现方法。分享给大家供大家参考,具体如下:package com.ethan.sort.java;import java.util.Arrays;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class QuickSort {public static &g…

java奥运会安排赛程问题_记录奥运-当今五大Java记录框架之间的竞赛

java奥运会安排赛程问题开发人员:Takipi会告诉您何时新代码在生产中中断– Log4J vs SLF4J简单vs Logback vs Java Util日志记录vs LOG4J2 日志记录实际上是每个服务器端应用程序中古老且固有的部分。 这是应用程序以持久且可读的方式输出实时状态的主要方法。 某些…

【渝粤题库】陕西师范大学165203 社会保险学 作业(专升本)

《社会保险学》作业 一、单选题 1、劳动者参加()不需要缴纳任何保险费,而且享受待遇不受年龄、工龄、缴费年限、性别等条件的限制。 A、养老保险 B、医疗保险 C、工伤保险 D、失业保险1948年正式宣 2、保障社会安全的最后一道防线是&#xff…

【渝粤题库】陕西师范大学189202 品牌管理 作业(专升本)

一、名词解释 1、商标 2、品牌个性 3、品牌接触点 4、品质认知 5、品牌 6、品牌联想 7、品牌联合 8、品牌经理制 9、品牌形象 10、品牌杠杆力 11、品牌审计 12、投射法 13、品牌保护 二、 选择填空 A. 消费者 B. 体验 C.品牌定位 D. 品牌标识 E.反比 F. 正比 G.伞型品牌策略 H.…

【渝粤题库】陕西师范大学200311常微分方程作业(高起本)

《常微分方程》作业 一.求解下列方程 1.求方程之通解; 2.求方程之通解; 3.解初值问题; 4.求方程 之通解; 5.求方程 的通解; 6. 求方程 的通解; 7…

为什么在子类中不重写超类的实例变量

当我们在父类和子类中创建一个具有相同名称的变量,并尝试使用持有子类对象的父类引用访问它时,我们会得到什么? 为了理解这一点,让我们考虑下面的示例,其中在Parent和Child类中声明一个具有相同名称的变量x 。 class…

【渝粤题库】陕西师范大学200681C语言程序设计 作业(高起专、高起本)

一、单选题 1.有如下程序段,其执行后的输出结果为( )。 main() {int i8; while(i>1) {–i; printf(“%d”,i–);} } A. 753 B. 7531 C. 8642 D. 864 2.在下列的数组定义中,哪一个有语法错误(…

【渝粤题库】陕西师范大学201041德育论 作业(专升本)

《德育论》作业 一、单选题 1.德育过程的实质是(  )  A.将学生的思想品德认识转化为品德行为   B.提高学生自我教育、自我修养的自觉性  C.提高学生对客观世界的认识  D.教育者将一定社会的思想道德规范转化为受教育者个体的思想品德 2.大众传媒的…

【渝粤题库】陕西师范大学201661英语阅读(二)作业(高起专)

陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 《阅读(二)》作业 I.Words DIRECTIONS: Read the sentence given with each word and choose the best meaning for it. 1.injure Wooden spears or swords should be used on…