# 索引
# 含义:相当于一本书的目录,让查询更快
# 主键索引
# 注意:主键索引就是主键约束
# 添加主键索引
CREATE TABLE student(
id INT(32) PRIMARY KEY auto_increment,
name VARCHAR(32),
sex VARCHAR(32),
age INT(3),
salary FLOAT(8,2),
course VARCHAR(32)
)
# 删除主键索引
ALTER TABLE student DROP PRIMARY KEY;
# 唯一索引
# 注意:唯一索引就是唯一约束
# 添加唯一索引
ALTER TABLE student ADD UNIQUE(phone);
# 修改唯一索引
ALTER TABLE student MODIFY `name` VARCHAR(32) UNIQUE;
# 删除唯一索引
ALTER TABLE student DROP INDEX `name`;
# 普通索引
# 注意:普通索引不是约束,单单让当前字段查询快而已(没有做任何的限制 -- 字段上的数据可以重复也可以为null)
# 添加普通索引
ALTER TABLE student ADD INDEX(course);
# 删除普通索引
DROP INDEX course on student;
# 全文索引
# 注意:MySQL5.5以上版本才有的索引,在工作中也不使用该索引
# 索引的数据结构 --- B+Tree
# 索引的优缺点:
# 优点:查询快
# 缺点:更新数据时,索引文件也会发生改变,所以一张表中的索引不宜过多
# 解决缺点:批量更新时,先删除索引,更新完毕后再添加索引
# 经验:
# 1.表中唯一标识的字段(不允许重复并且不允许为null),就可以设置为主键索引
# 2.在业务经常查询的条件需要加上索引(根据数据选择唯一索引或普通索引)
# 3.查询条件竟可能使用主键字段 SELECT * FROM student WHERE id=xxx;
索引的分类:聚簇索引和非聚簇索引---区别
索引的分类:聚簇索引和非聚簇索引
# 聚簇索引 - 主键索引:叶子节点上就是数据行
# 非聚簇索引 - 唯一/普通/全文索引:叶子节点上是主键地址
# 索引失效的情况:
# 1.使用模糊查询时
# 2.索引如果是联合索引,第一个字段失效时,不会找第二个字段
# 3.查询时,MySQL会有查询算法,判断是走顺序查找更快,还是索引索引更快,如果是顺序查找更快就不走索引这条路