【BATJ】面试必问MySQL索引实现原理
BATJ面试题剖析 1、 为什么需要使用索引? 2、 数据结构 Hash 、平衡二叉树、 B 树、 B+ 树 区别? 3、 机械 硬盘、固态硬盘区别? 4、 M yisam与 I nnodb B+ 树的区别? 5、 MySQL 中的索引什么数据结构? 6、M ySQL 数据库优化方案? 1.为什么需要使用索引? MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效 获取数据的数据结构。 也就是说:索引就像书的目录一样可以非常快速的定位到书的页码。 如果向 mysql 发出一条 sql 语句请求,查询的字段没有创建索引的话,可能会导致全表扫描,这样查询效率非常低 2.1 数据结构 Hash 算法 哈希表(Hash table,也叫散列表),是根据关 键码值(Key value) 而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做 散列函数 ,存放记录的数组叫做 散列表 。 优点 : 通过字段的值计算的hash值,定位数据非常快, 查找可以直接根据 key 访问。 缺点 : 因为底层数据结构是散列的,无法进行比较大小, 不能进行范围查找 index=Hash(key) 2.2数据结构 平衡二叉树算法 平衡二叉查找树,又称 AVL树。 它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它