数据库索引-简单了解

一、什么是索引,为什么要使用索引?

1.索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构

2.索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。

就和汉语字典一样,我们可以按照拼音,部首,笔画等排序的目录(索引),来快速查找到需要的字。

二、索引的优缺点

1.最大的优点就是大幅度提高查询效率

2.缺点:如果要对表进行更改时,数据库不但要保存更改的数据,还要保存索引

三、索引的分类

1.普通索引:在任意的字段上创建索引

2.唯一索引,要求索引的值必须唯一,允许空值

3.主键索引,在创建表时必须有主键,数据表中默认有主键索引,加速查找+约束(唯一且不为空)

4.组合索引,就是两个或两个以上的字段的索引

5.全文索引,用于搜索很长一片文章的时候,效果最好

四、索引的两个分类

#我们可以在创建上述索引的时候,为其指定索引类型,分两类

hash类型的索引:查询单条快,范围查询慢

btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它)

#不同的存储引擎支持的索引类型也不一样

InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;

MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;

Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引,不支持 Full-text 索引;

NDB 支持事务,支持行级别锁定,支持 Hash 索引,不支持 B-tree、Full-text 等索引;

Archive 不支持事务,支持表级别锁定,不支持 B-tree、Hash、Full-text 等索引;

五、索引的创建和删除
1.在表创建好之后使用

create index name(索引名) on s1(name); #添加普通索引

create unique age(索引名) on s1(age);添加唯一索引

alter table s1(表名) add primary key(id); #添加主键索引,也就是给id字段增加一个主键约束

create index name(索引名) on s1(id,name); #添加普通联合索引

2.删除索引

drop index id on s1;#删除普通索引

drop index name on s1; #删除联合索引

drop index age on s1; #删除唯一索引,就和普通索引一样,不用在index前加unique来删,直接就可以删了

alter table s1 drop primary key; #删除主键(因为它添加的时候是按照alter来增加的,那么我们也用alter来删)

六、索引使用时应注意的!

1.只要你创建了索引,在查询时,只要应用了创建了索引的字段,查询时自动调用索引

2.如果你的查询条件是or的话,如果你or条件中有为添加索引的字段,索引失效

3.如果你的查询条件是字符串类型,值必须添加引号

4.如果你的查询条件是!=,普通索引失效

5.排序条件时,如果索引字段中没有查询的字段,则普通索引无效

七、什么时候使用索引?

(1)创建索引时,应该确保索引时应用在SQL查询语句的条件

(2)创建索引时,如果是blobtext类型,必须指定长度

(3)可以在创建表时创建索引,也可以在已经创建好的表上创建索引

(4)一个表中最好不要创建六个以上的索引

(5)数据量超过300的表应该有索引



 
原文地址:https://www.cnblogs.com/cyk2/p/11265701.html