前言
越来越多的公司正在使用MySQL作为数据库来进行数据存储,想必索引(Index)大家也都不会陌生,可能所有的开发人员都知道索引是为了加速数据查询才存在的。无论是在开发中还是面试中,索引出现的频率都是特别的高,所以无论是为了工作还是面试,我们都要搞清楚索引的原理,只有掌握了它的原理才能应付各种问题。接下来我们就简单来了解一下到底MySQL的索引是什么。
2024年10月12日
2024年10月12日
索引(Index)是帮助MySQL高效获取数据的数据结构。
我们知道,数据库查询是数据库的最主要功能之一。但每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
2024年10月12日
本文基于InnoDB存储引擎来介绍索引的相关知识
在学习索引前需要提前了解的知识:
1)概念
页是InnoDB存储数据记录的基本单位,也是数据库IO操作的最小单位,页的大小默认是16KB,一个页中存放了多条数据记录。
2024年10月12日
前言
Hello我又来了,快年底了,作为一个有抱负的码农,我想给自己攒一个年终总结。索性这次把数据库中最核心的也是最难搞懂的内容,也就是索引,分享给大家。
这篇博客我会谈谈对于索引结构我自己的看法,以及分享如何从零开始一层一层向上最终理解索引结构。
从一个简单的表开始
2024年10月12日
今日分享开始啦,请大家多多指教~
mysql索引使用B+tree,为什么使用B+tree呢,首先,使用索引是为了加快查找的速度,B+tree的查找时间复杂度为log(n).那为什么不用o(1)的hashMap呢。mysql是有使用hashMap结构的hash索引的,但大部分情况下,我们使用的索引并不是hash索引,主要是hash索引这种结果在处理 !=, > ,< 这种范围查询时,需要全表扫描,时间复杂度为o(n)。
2024年10月12日
我想大家应该多多少少做过一些慢sql的优化吧,通常会是公司的leader或者是运维人员扔给你一些执行速度慢的sql语句,然后让你去优化。当遇到慢sql的时候,大家的第一直觉是不是查看索引有没有创建,索引是不是有命中等等。那这个索引到底是什么东西,为什么能提高数据的查询速度呢?那么下面就简单的介绍一下索引以及索引底层的数据结构等。
2024年10月12日