1、什么是索引
- 在关系数据库中,为了加速对表中数据行的检索而创建了一种分散的存储结构——索引。索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它针对表而建立,是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,一边加速检索物理数据
- 索引是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
- 索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
- 索引提供指向存储在表中的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这些可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。
2、索引的分类
根据数据库的功能,可以在数据库设计器中创建四种索引:单列索引、唯一索引、主键索引和聚集索引。
- 单列索引(普通索引)
最基本的索引类型,没有唯一性之类的限制 - 唯一索引
不允许其中任何两行具有相同索引值的索引 - 主键索引(简称为主索引)
数据库表中一列或列组合(字段)的值唯一表示表中的每一行。该列称为表的主键。
在数据库关系图中为表定义主键将主动创建主键索引,主键索引是唯一索引的特定类型。 - 聚集索引(聚簇索引)
表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引,即如果存在聚集索引,就不能再指定CLUSTERED关键字。但表中的每一列都可以有自己的非聚集索引。
3、索引的作用
- 快速取数据
- 保证数据记录的唯一性
- 实现表与表之间的参照完整性
- 在使用ORDER BY、GROUP BY子句进行数据检索时,利用索引可以减少排序和分组的时间
4、索引的优缺点
- 优点:
- 大大加快数据的检索速度
- 创建唯一性索引,保证数据库表中每一行数据的唯一性
- 加速表和表之间的连接
- 在使用分组合排序子句进行数据检索时,可以显著减少查询中分组和排序的时间
- 缺点:
- 索引需要占物理空间
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
5、添加索引的语句
- 已有表中添加索引
CREATE INDEX <索引的名字> ON tablename(数据库字段名称); -- 创建索引
ALTER TABLE tablename ADD INDEX [索引的名字](数据库字段名称); -- 修改表
- 创建表的时候指定索引
-- 普通索引
CREATE TABLE tablename(
[……], -- 创建表的列的属性
INDEX [索引的名字](数据库字段名称)
);
-- 唯一索引
CREATE TABLE tablename(
[……],
UNIQUE [索引的名字](数据库字段名称)
);
CREATE TABLE tablename(
[……],
PRIMARY KEY [索引的名字](数据库字段名称)
);