有些字段的数据经常需要修改,增加,删除,有些字段的数据经常需要被查询,就像不同的人有不同的爱好,我们要投其所好,今天讲解的索引就是为了实现差异化对待以上两种字段,像预处理功能一样,是一个锦上添花的功能
一.索引-概述
索引是为了快速查找某一字段具有特定值的数据,如果没有索引,我们查找某一字段的某个数据,就需要遍历,有了索引就像有了字典的目录,虽然增加了占用的存储空间,但是查询速度快了
索引适用于经常需要查找的字段,且数据量比较大的情况下,如果某一字段经常要修改,在修改的同时需要动态修改索引,执行效率会慢
1.什么是索引?
索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。
索引就相当于字典中前几页的目录(拼音/偏旁部首手), 通过目录我们就能快速的找到想要的结果.
如果没有索引, 就相当于字典没有目录(拼音/偏旁部首手),那么如果想要查找某条数据就必须从第一条开始一条一条的查找
2.MySQL中索引的优缺点和使用原则
2.1优点
+ 所有的MySql字段都可以用作索引
+ 大大加快数据的查询速度
2.2缺点
+ 索引也需要占空间
+ 对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度
2.3原则
+ 对经常用于查询的字段应该创建索引,
+ 数据量小的表最好不要使用索引,索引就可能不会产生优化效果。
By 极客江南
二.索引-分类
一般来说只要设置了主键字段,就会自动添加主键索引,因为主键具有不会被修改不用维护的特性,所以我们一般不会用到索引就是这个原因,因为我们一般可以通过主键查询
3.索引分类
+ 普通索引: MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
+ 唯一索引(唯一键): 索引列中的值必须是唯一的,但是允许为空值,
+ 主键索引:是一种特殊的唯一索引,不允许有空值。
+ ... ...
By 极客江南
三.索引-使用
示例一:
create table test1(
id int,
name varchar(20),
index idx_name(name) #创建索引
);
create table test2(
id int,
name varchar(20),
);
create index idx_name on test2(name); #创建索引
create table test3(
id int,
name varchar(20),
);
alter table test3 add index idx_name(name);
示例二:
create table test4(
id int,
name varchar(20),
unique index idx_name(name) #创建索引
);
create table test5(
id int,
name varchar(20),
);
create unique index idx_name on test5(name); #创建索引
create table test6(
id int,
name varchar(20),
);
alter table test6 add unique index idx_name(name);
By 极客江南
四.索引-删除
4.删除索引
drop index idx_name on test6
By 极客江南