一、索引
索引是sql优化的核心,一个sql语句是否需要优化(写的好与不好)就看是否使用了索引。——索引就是一个查找的目录。比如新华字典的首页,都会有一个目录,接着才是正文。如果不使用索引,就从数据的第一行开始查找,一行行的查(全文检索)
-- eg:
select * from emp where ename='Jack'; // 如果我将ename 这个字段加上了索引,会先从索引数据中查找到Jack,然后再从数据的表中直接取这个数据。
2、索引的优缺点
- 1、添加索引,查询速度非常的快
- 2、新增,修改和删除数据比较慢
- 3、添加索引,无形中占用了我们的空间(数据便会分为:索引数据+普通数据)
3、添加索引的原则
经常查询的字段,添加索引,不经常查询的字段,就不要添加索引。
- 1、经常查询的字段,添加索引,不经常查询的字段,就不要添加索引。
- 2、字段中的数据,如果有大量重复的,该字段不能添加
- 3、一个表中的外键字段可以添加索引,因为这个字段经常与另一个表进行关联查询
- 4、进行排序的列,可以添加索引 eg:order by sal;
- 5、在进行范围查找的字段可以添加索引。 eg:age between 20 and 40;
注:一个表不要添加很多索引,否则,插入数据的速度会非常的慢,而且占用空间。比如十几个字段的这样一个表,最多2~3个索引。
4、索引的分类
- 1、主键索引:所有的主键都是⼀种索引,天然的。
- 2 、唯⼀索引:将⼀个类设置为unique ,这种设置也是⼀种索引。
- 3 、普通索引:表中的普通类,可以设置为普通索引
5、索引如何使用
create table sc01(
sid int primary key auto_increment,
sname varchar(20),
score int ,
index(score)
);
-- 查看索引:
show index from sc01;
-- 删除索引
alter table sc01 drop primary key;
alter table sc01 drop index sname;
-- 如果设计表的时候忘记添加索引,可以后来追加
alter table sc01 add primary key(sid); // 追加主键
alter table sc01 add unique(sid); // 追加唯一索引
alter table sc01 add index sname; // 追加普通索引
6、存储过程讲解
存储过程其实就是一个类似于方法的SQL片段,用于提供一个功能。可以反复调用。