本文梳理MySQL索引的一些知识点
索引的分类和语法
索引分类
分类
分类 | 描述 | 特点 | 关键字 |
---|---|---|---|
主键索引 | 针对表中主键建立的索引 | 默认自动创建,只能有一个 | primary |
唯一索引 | 避免同一张表某数据列的重复 | 可以有多个 | unique |
常规索引 | 快速定位常规数据 | 可以有多个 | |
全文索引 | 查找文本中的关键词,不是比较索引的值 | 可以有多个 | fullText |
innoDB引擎的索引
innoDB引擎,根据索引的存储分为
分类 | 含义 | 特点 |
---|---|---|
聚集索引 | 数据和索引存储一起,索引的叶子节点保存行数据 | 有且只有一个 |
二级索引 | 数据和索引分开存储,索引的叶子节点存储对应主键 | 可存在多个 |
聚集索引选取规则
1、存在主键,主键作为唯一索引
2、不存在,选取唯一索引索引作为聚集索引
3、没有主键,没有合适的唯一索引,则innoDB会生成rowid作为隐藏的聚集索引
回表查询
查询某个字段时,从二级索引开始,找到主键,如果需要其他数据,回到聚集索引查询,这个过程叫做回表查询
索引基本操作
展示表索引
show index from tablename;
添加索引
#常规索引
create index idxname on tbname(key);
#唯一索引、全文索引
create [unique,fulltext] index idxname on tbname(key);
#联合索引
create index idxname on tbname(key,key1);
删除索引
drop index idxname on tbname
网友评论