文章目录
前言
附上狂神链接:https://blog.csdn.net/qq_33369905/article/details/105911814
一、索引的作用
在数据库系统中建立索引主要有以下作用:
- 快速取数据;
- 保证数据记录的唯一性;
- 实现表与表之间的参照完整性;
- 在使用ORDER BY、GROUP BY子句进行数据检索时,利用索引可以减少排序和分组的时间。
二、优缺点
1. 优点
- 大大加快数据的检索速度;
- 创建唯一性索引,保证数据库表中每一行数据的唯一性;
- 加速表和表之间的连接;
- 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
2. 缺点
- 索引需要占物理空间。
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
三、索引类型
1. 主键索引 (Primary Key)
简称为主索引,数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键。
在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。
语法:ALTER TABLE 表名字 ADD PRIMARY KEY ( 字段名字 )
-- 创建后添加
-- 给 user 表中的 id字段 添加主键索引(PRIMARY key)
ALTER TABLE `user` ADD PRIMARY key (id);
-- 创建表的时候添加主键
CREATE TABLE `category` (
`categoryid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主题id',
`pid` INT(10) NOT NULL COMMENT '父id',
`categoryName` VARCHAR(50) NOT NULL COMMENT '主题名字',
PRIMARY KEY (`categoryid`)
) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
2. 唯一索引 (Unique)
唯一索引是不允许其中任何两行具有相同索引值的索引。
与主键索引的区别
- 主键索引只能有一个
- 唯一索引可能由很多个
-- 创建的时候添加
CREATE TABLE `Grade`(
`GradeID` INT(11) AUTO_INCREMENT PRIMARYKEY,
`GradeName` VARCHAR(32) NOT NULL UNIQUE
-- 或 UNIQUE KEY `GradeID` (`GradeID`)
)
语法:ALTER TABLE 表名字 ADD UNIQUE (字段名字)
-- 创建后添加
-- 给 user 表中的 creattime 字段添加唯一索引(UNIQUE)
ALTER TABLE `user` ADD UNIQUE (creattime);
3. 常规索引 (Index)
最基本的索引类型,没有唯一性之类的限制。INDEX和KEY关键字都可以设置常规索引
但不宜添加太多常规索引,影响数据的插入、删除和修改操作
-- 创建表时添加
CREATE TABLE `result`(
-- 省略一些代码
INDEX/KEY `ind` (`studentNo`,`subjectNo`) -- 创建表时添加
)
语法:ALTER TABLE 表名字 ADD INDEX 索引名字 ( 字段名字 )
-- 创建后添加
ALTER TABLE