innodb索引分析

Mysql(innodb)的索引

索引的定义

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据 库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数 据结构上实现高级查找算法,这种数据结构就是索引。

索引类型(从数据结构角度)

1.HASH索引

  • 什么是Hash(散列)?

    hash就是一种(key=>value)形式的键值对,如数学中的函数映射,允许多个key对应相同的value,但不允许一个key对应多个value。

  • 为什么能用作索引?

    通过散列算法之后形成的key-value的键值对的查询速度是o(1),这是一种非常适合做查询的数据结构。

  • 优缺点是什么?

    优点:单个值查询速度快o(1)。
    缺点:不适合做范围查询,范围查询的速度非常慢,它需要挨个将区间的值查询出来。

2.B+树索引(常用)

  • 什么是B+树?

    B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。

  • 为什么能用作索引?

    因为b+树这种数据结构的查询速度也是很快的o(logn),虽然没有hash的那么快,但是对于范围查询来说,这种索引比hash快很多。这就导致该数据结构查询效率非常稳定,所以适合做索引。

  • 优缺点是什么?

    优点:查询效率稳定
    缺点:需求维护该树形结构,增删改操作都需要花费一定时间。且还需花费空间来存储。

索引优缺点

优点:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;

劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表;

索引的使用

1.索引需要覆盖到经常用作查询的字段
2.索引虽然可以加快查询,但是不是越多越好,会占用额为的维护成本
3.写sql语句时需要考虑到怎么去跟索引字段挂钩
.
.
.
.
.
.
…后续再加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值