失踪人口回归,近期换工作一波三折,耽误了不少时间,从今开始每周更新~ 索引是一种支持快速查询的数据结构,同时索引优化也是后端工程师的必会知识点.各个公司都有所谓的MySQL"军规",其实这些所谓的优化和规定,并不是什么高深的技术,只是要求大家正确建立和使用索引而已.工欲善其事必先利其器,想要正确运用索引,需要了解其底层实现原理,本文将探索关于索引的"是什么"以及"为什么". MySQL中关于索引的概念有很多,为了避免混淆,在上一篇文章中关于索引在…
看了很多关于索引的博客,讲的大同小异.但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问! 索引是什么? 索引是帮助MySQL高效获取数据的数据结构. 索引能干什么? 提高数据查询的效率. 索引:排好序的快速查找数据结构!索引会影响where后面的查找,和order by 后面的排序. 一.索引的分类 1️⃣从存储结构上来划分:BTree索引(B-Tree…
关于MySQL索引相关的内容,一直是一个让人头疼的问题,尤其是对于初学者来说.笔者曾在很长一段时间内深陷其中,无法分清"覆盖索引,辅助索引,唯一索引,Hash索引,B-Tree索引--"到底是些什么东西,导致在面试过程中进入比较尴尬的局面. 很多人可能会抱怨"面试造火箭,工作拧螺丝,很多知识都是为了面试学的,工作中根本用不到!".庆幸的是,MySQL中索引不仅是面试必考知识,还是工作中用到最为频繁的必备技能,在笔者看来,索引是MySQL中性价比最高的一部分内容. 由…
理解MySQL——索引与优化 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优 的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将对整个表进行扫描,最 坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O 时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多).如果对之建立B-Tr…
sql查询 explain的详细用法 操作时间:寻道时间+旋转时间 引入索引:采用二叉树结构 把第二列做为索引生成二叉树结构,此时查询89 只做了两次io操作 但是mysql 为什么不用二叉树作为底层索引结构? 红黑树 hash where col1 > 6 如果使用哈希结构无法使用索引 mysql B+ tree的每一个节点的大小正好是磁盘逻辑块的页大小 4kb.分配节点时不管用不用的了都正好分配1页的大小4kb,这样这些数据在物理磁盘上就是连续的. 叶子节点的指针利于预读操作. mysql的…
MySQL使用了B+Tree作为底层数据结构,能够实现快速高效的数据查询功能.工作中可怕的是没有建立索引,比这更可怕的是建好了索引又没有使用到.本文将围绕着如何优雅的使用索引,图文并茂地和大家一起探讨索引的正确打开姿势,不谈底层原理,只求工作实战. 1. 索引的特点 page之间是双链表形式,而每个page内部的数据则是单链表形式存在.当进行数据查询时,会限定位到具体的page,然后在page中通过二分查找具体的记录. 并且索引的顺序不同,数据的存储顺序则也不同.所以在开发过程中,一定要注意索引…
关键字的个数等于路的个数减1. 一个二叉树节点可以存储4kb大小的数据,假如关键字是整型的一个关键字占用4byte,其他数据冗余4个字节 4 kb = 4*1024 byte = 4096 byte. 4096/8 = 512 也就是说一个节点中可以存储512个关键字. 多路平衡查找树如何保证绝对的平衡? 分裂 辅助索引最后子节点存储的并不是最后的数据或者数据的地址而是对应的主键索引.为何要这样做? B+ 树是绝对平衡树,那么新增或者删除会导致节点的分裂移动从而导致子必须同时修改子节点的数据区.…
深入理解mysql索引 1 深入理解索引 1.1 索引基础理论知识: 1.2 B+树索引 1.3 哈希索引 1.4 理解B+树.哈希索引结构及区别: 1.5 理解常见索引的基本概念:主键索引.唯一索引.普通索引.联合索引等之间的区别:1.6 理解MyISAM和InnoDB的索引结构区别:1.7 理解如何通过索引提高SQL效率: binary search,二分查找法,也叫折半查找法(折半搜索.二分查找算法.二分搜索),是一种在有序数组中查找某一特定元素的搜索算法这种搜索算法每一次比较都使搜索范围…
## 主键 超键 候选键 外键 (mysql数据库常见面试题) 数据库之互联网常用架构方案 数据库之互联网常用分库分表方案 分布式事务一致性解决方案 MySQL Explain详解 ## 数据库事务的四个特性及含义 (mysql数据库常见面试题) ## drop,delete与truncate的区别(mysql数据库常见面试题) ## 索引的工作原理及其种类(mysql数据库常见面试题) ## 连接的种类(mysql数据库常见面试题) ## 数据库优化的思路(mysql数据库常见面试题) ##…
本文转载自CodingLabs,原文链接 MySQL索引背后的数据结构及算法原理 目录 摘要 一.数据结构及算法基础 1. 索引的本质 2. B-Tree和B+Tree 3. 为什么使用B-Tree(B+Tree) 二.MySQL索引实现 1. MyISAM索引实现 2. InnoDB索引实现 三.索引使用策略及优化 1. 最左前缀原理与相关优化 2. 索引选择性与前缀索引 3. InnoDB的主键选择与插入优化 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说…