内容及图片来源:黑马程序员
索引分类:
1.主键索引:针对表主键创建的索引
特点:默认自动创建,只有一个
关键字:primary
2.唯一索引:避免同一个表中某数据列中的值重复
特点:多个
关键字:unique
3.常规索引:快速定位特定数据
特点:多个
关键字:
4.全文索引:查找文本关键词,而不是比较索引中的值
特点:多个
关键字:fulltext
按INNODB存储引擎,存储形式分类:
- 聚集索引:将数据和索引放在一块,索引结构的叶子节点保存了数据,必须有且唯一
- 二级索引(非聚集索引):将数据和索引分开储存,索引结构的叶子二点关联的是主键
聚集索引选取规则∶
- 如果存在主键,主键索引就是聚集索引。
- 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
- 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引。
例:主键id作为索引值,且是聚集索引,底下挂的是整个行值,如果用name,来做索引,就是二级索引,挂的数据是主键值
例如:select*from user whereusername=’Arm’;
就是先走二级索引找到主键值,再走一级索引找到该主键值下的数据。称为回表查询。
思考:INNODB主键索引的B+tree树高度有多高?
创建索引语法:
#创建
create [unique|fulltext] index index_name on table_name(column_name);
#查看
show index from table_name;
#删除
drop index index_name on table_name;
索引创建:
查看索引