MySQL索引
一、索引的概念
定义:索引是对数据库表中一列或多列的值进行排序的一种结构,索引可以提高检索效率。数据库像书籍,索引就如目录。
优点:索引可以减少服务器需要扫描的数据量,从而加快检索速度;索引可以帮助服务器避免排序(order by)和创建临时表(join)
缺点:创建和维护索引需要耗费时间;索引需要占据物理空间;增删改需要动态维护
应用:经常搜索的列;主键列;用于连接的列(外链);根据范围(<,<=,=,>,>=,BETWEEN,IN)进行搜索的列;order by;where
二、索引的分类
逻辑分类与物理分类
1、逻辑分类:按功能分:主键索引--不允许重复、不允许NULL ,ALTER TABLE TableName ADD PRIMARY KEY(column_list);
唯一索引--数据列不允许重复、允许NULL ,CREATE UNIQUE INDEX IndexName ON `TableName`(`字段名`(length));
普通索引--可包含多个字段,允许数据重复,允许 NULL 值插入;
按列数分:单例索引--一个索引只包含一个列,一个表可以有多个单例索引;
组合索引--一个组合索引包含两个或两个以上的列。查询是遵循“最左前缀”原则;
2、物理分类:聚簇索引