稍等一小会儿就好啦~

MySQL高级特性——索引

索引

定义

MySQL官方对索引(index)的定义是:索引是帮助MySQL高效获取数据的数据结构

在数据库的应用中,索引可以简单理解成是一种排好序的快速查找数据结构。

常见索引:

B树索引 B+树索引 哈希索引

优势与劣势

优势:

  1. 提高数据检索的效率,降低了数据库的IO成本。
  2. 降低了数据排序的成本,降低了CPU资源的消耗。

劣势:

  1. 索引保存了主键和索引字段,并指向实体表的记录,索引列需要占用存储空间

  2. 索引降低了更新表的速度。

  3. 维护索引需要成本。

因此,需要频繁查询和排序的字段适合建立索引,主键自动建立唯一索引,外键应建立索引,而需要频繁更新的字段不适合建立索引。

分类

类别 含义
单值索引 一个索引只包含单个列,一个表根据列的数目有多个单列索引
唯一索引 索引列的值必须唯一,但可以包含空值
复合索引 一个索引包含多个列

高并发条件下适合建立复合索引。

SQL语句

操作 语句
创建 CREATE [UNIQUE] INDEX index_name ON table_name(column_name(length));
ALTER table_name ADD [UNIQUE] INDEX [index_name] ON (column_name(length));
删除 DROP INDEX [index_name] ON table_name;
查询 SHOW INDEX [index_name] FROM table_name;

结构

常见的索引为B+树结构,每个节点对应一个磁盘块

image

查询数据项29:

第一次IO:则先将磁盘块1加载到内存,内存中二分查找,29位于17和35之间,锁定磁盘块1的P2指针。

第二次IO:再将磁盘块3加载到内存,内存二分查找,29位于26和30之间,锁定磁盘块3的P2指针。

第三次IO:将磁盘块8加载到内存,内存二分查找到29,查询结束。

由于内存做二分查找非常快,因此要尽可能使B+树变得矮胖,即减小深度,增大广度,以减少IO次数,提升查询效率。

posted @ 2021-09-27 15:54  LuJT  阅读(91)  评论(0)    收藏  举报