mysql索引

什么是索引?

当我们查阅书籍字典的时候,一般都会使用目录来快速定位。

通过使用索引,可以更方便快捷的获取需要的数据库信息。

分类

在mysql中,索引主要有:普通索引,唯一索引,全文索引等。

实例

下面先从一个小demo中看一下普通索引的作用:

1、新建表,表名为f1,并插入数据,见下图。

这里写图片描述

2、创建、查看和删除

1)创建

注意:其中表名为“f1”,为name列创建索引,名称为”in_name”。

第一种:
直接创建索引

create index in_name on f1(name);

修改表结构的方式(推荐使用)

alter table f1 add index in_name(name);

2)查看索引

这里写图片描述

删除索引

alter table f1 drop index in_name;

3、测试查询

方法:通过使用explain/desc来分析sql的执行。
具体语法格式:

explain select * from f1 where id=1G

或
desc select * from f1 where id=1G

先来试验一下,查询主键id

这里写图片描述

简单介绍下主要的含义:

select_type:表示select类型,simple为单表。primary为主查询等
type:表的连接类型。const只一行匹配,all全表扫描,index索引。
possible_keys:查询可能使用的索引。
key:实际使用索引
rows:扫描行数

效率

通过name列查询来比较其差别。

不使用索引

这里写图片描述

使用索引

Extra行是“Using index”,表示使用索引,名称为in_name。
这里写图片描述

对比两个图,其中差别最大的是“rows”行。因为表f1本身有7条数据,不使用索引前,查询行数为7。但使用之后,rows减为2。查询行数直接影响执行效率。

以上是普通索引的用法,简单提一下其他索引。
唯一索引的特点是索引列的值必须唯一,但允许有空值。关键字为 UNIQUE
举个例子:

create unique index in_indexname on f1(name);

缺点:

图书的目录,如果被利用的好那会很方便,但如果滥用,不仅起不到原有的作用,还会带来巨大的负担,而且还需要维护目录。
索引也是一样,它方便了查询,但降低了更新表的速度。因为mysql不仅要保存数据,还要保存索引文件。
mysql索引只对一些操作符使用:<,<=,>,>=,between,in,like(不以%开头)。

原文地址:https://www.cnblogs.com/saixing/p/6730221.html