定义
索引是帮助mysql高效获取数据的拍好序的数据结构
一般使用B+树
数据结构
-
为什么不用二叉树 单纯二叉树可能变成单链,无法实现检索优化
-
为什么不用红黑树 红黑树也是二叉树,不过会自动平衡,防止变成单链 但是高度也会很大,查找速度会慢
-
B树 特点:
-
叶节点深度一致,叶节点的指针为空
-
叶节点数据索引从左到右递增
3.1 B+树
- 叶节点高度一致
- 非叶节点不存储data,只存储索引
- 只有叶节点存储data, 叶节点包含所有索引字段
- 叶节点使用指针连接,提高区间访问性能
优势
一般数据在磁盘中存储,是无序的,遍历查找的话,速度会很慢。 建立索引可以
- 加快遍历速度,降低数据库的IO成本
- 通过索引对数据排序,降低了排序成本,减少了CPU的消耗
劣势
- 索引也是一张表 需要占用空间
- 降低了更新速度 更新数据时,也得更新索引
使用
- 查看
show INDEX from tableName
//例如
show INDEX from article
- 创建
create index indexName on tableName(row)
//例如
create index idx_article_ccv on article(category_id, comments, views)
- 删除
DROP index indexName on tableName
//例如
DROP index idx_article_ccv on article