MySql的学习_MySQL索引&视图&存储过程(4)

MySql索引

(SQL where 条件中排除越多的条件放在第一个)

基本概念

我们可以通过对数据表中字段创建索引 来提高查询速度 MySQL索引可提升查询效率
常见的索引分类:

  • 主键索引(primary key):主键是一个唯一性的索引 每个表中只能有一个主键
  • 唯一索引(unique):索引列的所有数据只能出现一次,必须是唯一
  • 普通索引(index):最常见的索引 ,作用是提高对数据的访问数据
    表对应的索引被保存在一个索引文件中,如果对数据进行增删改操作,MySql就需要对索引进行更新,所以虽然索引能提高查询效率,但也会占用一定的磁盘空间,若为所有的字段都添加上索引,效率反而是会下降

创建索引

主键索引

在这里插入图片描述
先创建一张表

CREATE TABLE demo01( 
	did INT, 
	dname VARCHAR(20), 
	hobby VARCHAR(30) 
);
  • 方法1 创建表的时候 直接添加主键
CREATE TABLE 表名( -- 
添加主键 
	字段名 类型 PRIMARY KEY, 
);
  • 方式2 创建表之后修改表结构 添加主键索引
-- 为demo01表添加主键
ALTER TABLE demo01 ADD PRIMARY KEY(did); 

在这里插入图片描述

唯一索引

索引列的所有值都只能出现一次, 必须唯一

  • 方法一: 创建表的时候直接添加主键索引
CREATE TABLE 表名( 
	列名 类型(长度), 
	-- 添加唯一索引 
	UNIQUE [索引名称] (列名) 
);
  • 方法二 : 使用create语句在已有的表上创建索引
    create unique index 索引名 on 表名(列名(长度))
-- 为demo01表的hobby创建唯一索引
CREATE UNIQUE INDEX ind_hobby ON demo01(hobby);

在这里插入图片描述
添加唯一索引的所有值都只能出现一次,保证数据的唯一性,也提升了查询效率
添加了就会报错
在这里插入图片描述

普通索引

普通索引(关键字KEY或INDEX)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column=)或排序条件(ORDERBY column)中的数据列创建索引

  • 方式一 create index 索引名 on 表名(列名[长度])

  • 方式二 ALTER TABLE 表名 ADD INDEX 索引名 (列名)

-- 为demo01表中 dname字段添加普通索引
ALTER TABLE demo01 ADD INDEX ind_dname(dname);

在这里插入图片描述

删除索引

ALTER TABLE table_name DROP INDEX index_name;

-- 删除dname字段上的索引
ALTER TABLE demo01 DROP INDEX ind_dname;

在这里插入图片描述

索引的总结

创建索引的原则:

  • 应优先选择在 where 及 order by 涉及的列上建立索引
  • 优点:大大的提高查询速度和减少查询中分组和排序的时间,并可以通过创建唯一索引保证数据的唯一性
  • 缺点:创建索引和维护索引需要时间,而且数据量越大时间越长;当表中的数据进行增删改操作时,索引也要同时进行维护,降低了数据的维护速度;索引文件需要占据磁盘空间

猜你喜欢

转载自blog.csdn.net/Maybe_do_it/article/details/120841618