一、索引定义(类似于书本中的目录)
- MySQL的索引是对数据库表中一个或多个列的值进行排序的结构。索引有助于更快地获取信息,是用来定位的
- 对表中的列是否创建索引,以及创建何种索引,对于查询的响应速度会有很大差别。创建了索引的列几乎是立即响应,而不创建索引的列则需要较长时间的等待。
二、索引的作用
1、在数据库系统中创建索引主要有以下作用:
优点
- 加快查询速度
- 保证数据的唯一性(唯一约束)
- 实现表与表之间的参照完整性(进行外键约束参照的列)
- 在使用group by、order by子句进行查询时,利用索引可以减少排序和分组的时间
2、索引的缺点
- 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
- 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
三、索引的分类
1、主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引
语法:
随表一起建索引:
CREATE TABLE customer (
id INT(10) UNSIGNED AUTO_INCREMENT,
customer_no VARCHAR(200),
customer_name VARCHAR(200),
PRIMARY KEY(id)
);
unsigned (无符号的)
使用 AUTO_INCREMENT 关键字的列必须有索引(只要有索引就行)。
CREATE TABLE customer2 (
id INT(10) UNSIGNED,
customer_no VARCHAR(200),
customer_name VARCHAR(200),
PRIMARY KEY