MySQL索引概述

目录

1、什么是索引

2、索引能干什么

3、索引的优缺点

4、MySQL索引结构分类

5、索引结构介绍

6、索引分类

7、索引语法


1、什么是索引

索引是一种有序数据结构,用来提高数据检索的效率

2、索引能干什么

索引可以减少数据库IO操作和降低CPU性能消耗

3、索引的优缺点

  • 优点:提高查询效率
  • 缺点:索引的建立需要占用一定的磁盘空间,降低表的更新速率(update、insert、delete)

4、MySQL索引结构分类

MySQL索引是在存储引擎层实现的,不同存储引擎有不同的索引结构,主要包含以下几种:

1、B+Tree索引                       最常见的索引类型

2、Hash索引                           底层数据结构是哈希表,由于哈希函数,不支持范围查询

3、R-Tree(空间索引)          MyISAM引擎的一个特殊索引,常用于空间数据结构

4、Full-Text(全文索引)        一种通过建立倒排索引,快速匹配文档的方式   

5、索引结构介绍

  • B Tree

5阶B树,意味着最多有5个节点,4个key,每一个结点上均有元素

  • B+ Tree 

元素均分布在叶子结点上且叶子结点之间形成了一个单向链表

MySQLB+树索引在原B+树的基础上做了增强,每个叶子结点之间形成有尾指针双向链表

  • Hash索引

通过Hash算法,将对应索引字段放置在对应的哈希槽中

特点:

  1. 不支持范围查询
  2. 无法利用哈希索引完成排序操作
  3. 查询效率高,通常只需要一次检索,效率要高于B+Tree索引 
面试题:

为什么InnoDB引擎选择使用B+Tree索引结构?

1、对于二叉树、红黑树(二叉平衡树)在大数据量下性能低效,B+Tree层级少

2、对于BTree,无论是叶子结点还是非叶子结点都会保存数据,而数据都会占用页的存储空间,这样就会导致一页中存储的键值减少,指针也跟着减少,要保存同样的大量数据,只能增加树的高度,导致性能降低

6、索引分类


 聚集索引选取规则:

  • 如果存在主键,主键索引就是聚集索引
  • 如果不存在主键,将使用第一个唯一索引作为聚集索引
  • 以上都没则InnoDB会自动生产一个rowId作为隐藏的聚集索引

聚集索引有且仅有一个,叶子结点上存储行数据

 回表查询:先从二级索引查询到对应的主键值,再回到聚集索引查询行元素

7、索引语法

  • 创建索引

CREATE [UNIIQUE | FULLTEXT] INDEX INDEX_NAME ON TABLE_NAME(col.......)

  • 查看索引

SHOW INDEX FROM TABLE_NAME

  • 删除索引

DROP INDEX INDEX_NAME ON TABLE_NAME

  • 查看SQL执行频次

SHOW GLOBAL STATUS LIKE 'Com_%'

  • 慢查询日志

SHOW VARIABLES LIKE 'slow_query_log'

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值