mysql索引的建立对于mysql的高效运行是很重要的,索引可以大大提高mysql的检索速度。
索引分为单列索引和组合索引。
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。
组合索引,即一个索引包含多个列。
创建索引时,需要确保该索引是应用在sql查询语句的条件(一般作为where字句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
索引的优势:合理的设计且使用索引,可以提高查询小路。
缺点:索引会降低更新表的速度,如对表进行insert、update、delete。因为更新表是,mysql不仅要保存数据,还要保存以下索引文件。建立索引会占用磁盘空间的索引文件。
普通索引
创建索引有3种方法
- 1.直接创建:create index 索引名 on 表 (列(length));
- 2.通过修改表结构创建: alter table 表 add index 索引名(列(length));
- 3.创建表的时候直接指定: create table 表名(列1, 列2, 列3, 索引);
唯一索引
唯一索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。创建方式:
- 1.创建索引:create unique index 索引 on 表(列(length));
- 2.修改表结构:alter table 表 add unique index 索引 (列(length))
- 3.创建表的时候指定:create table 表(列1, 列2, unique 索引(列(length)) )
索引类型
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
删除索引
- 1.使用drop子句:drop index 索引名 on 表;
- 2.使用alter语句:alter table 表 drop index 索引;
查看当前表的索引
show index from 表名;