一、索引
1.索引概述
索引(Index)是帮助MySQL高效获取数据的数据结构。
索引是在存储引擎中实现的
2.索引的优缺点
优点:
1.降低数据库的IO成本
2.保证数据的唯一性
约束保障:唯一索引、主键索引可自动实现唯一性约束。
3.加速表和表之间的连接
4.减少查询中分组和排序的时间
缺点:
1.降低更新表的速度占用额外磁盘空间
2.存在索引失效风险
索引失效场景(高频考点)
·违反最左匹配
·索引列做运算、函数、类型转换
·like %xxx 左模糊(like xxx% 可用索引)
·or 两侧有字段无索引
·not in / not exists / is not null 大概率失效
·全表数据差异极小(如性别),MySQL 优化器放弃索引
3.索引的分类
MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。
从功能逻辑上说,索引主要有4种,分别是普通索引、唯一索引、主键索引、全文索引。
按照物理实现方式,索引可以分为2种:聚簇索引和非聚簇索引。
按照作用字段个数进行划分,分成单列索引和联合索引。
4.聚簇索引
(1)什么是聚簇索引
聚簇索引:聚簇索引 = 索引结构和数据存放在一起的索引。
叶子节点存的是整行数据;一张表只能有一个聚簇索引
InnoDB 默认就是聚簇索引组织表
非聚簇索引:非聚簇索引 = 索引和数据分开存放的索引。
(2)聚簇索引的优缺点
优点:
按主键查询极快,直接找到整行数据
范围查询、排序非常快
节省空间(数据和索引不分离)
缺点:
插入无序主键会造成页分裂,性能变差
主键不宜过长(因为二级索引都会存主键)
一张表只能一个,无法多建
原创
一、索引
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法