MySQL索引简介

149 阅读1分钟

定义

索引是帮助mysql高效获取数据的拍好序数据结构

一般使用B+树

数据结构

数据结构动态图解网站

  1. 为什么不用二叉树 单纯二叉树可能变成单链,无法实现检索优化

  2. 为什么不用红黑树 红黑树也是二叉树,不过会自动平衡,防止变成单链 但是高度也会很大,查找速度会慢

  3. B树 特点:

  4. 叶节点深度一致,叶节点的指针为空

  5. 叶节点数据索引从左到右递增

3.1 B+树

  1. 叶节点高度一致
  2. 非叶节点不存储data,只存储索引
  3. 只有叶节点存储data, 叶节点包含所有索引字段
  4. 叶节点使用指针连接,提高区间访问性能

优势

一般数据在磁盘中存储,是无序的,遍历查找的话,速度会很慢。 建立索引可以

  1. 加快遍历速度,降低数据库的IO成本
  2. 通过索引对数据排序,降低了排序成本,减少了CPU的消耗

劣势

  1. 索引也是一张表 需要占用空间
  2. 降低了更新速度 更新数据时,也得更新索引

使用

  1. 查看
show INDEX from tableName
//例如
show INDEX from article
  1. 创建
create index indexName on  tableName(row)
//例如
create index idx_article_ccv on article(category_id, comments, views)
  1. 删除
DROP index   indexName  on tableName
//例如
DROP index idx_article_ccv  on article