mysql是干什么的_MySQL索引到底是干什么的?怎么用?还不懂?

MySQL索引到底是干什么的?这个问题自己一直理解的很模糊,只知道它相当于书的目录,能加快数据检索速度。但是要深入一点去说,它为什么能加快数据检索速度,从哪能看出它加快了检索速度,说到这可能我就有点迷茫了。

之前最MySQL的理解差不多仅限于增删查改,但最后发现仅仅知道这是不行的,所以找了一些资料,补了一下这方面的知识。之前我对MySQL索引的理解是在设计表的时候给字段添加一个索引的属性,然后查询的时候用到这个索引。。。现在看来以前的理解真是太。。。

下面我们通过实例来理解MySQL索引

首先,创建一张数据表CREATE TABLE `test` (

`id` int(11) NOT NULL,

`name` char(10) DEFAULT NULL,

`class` int(11) DEFAULT NULL,

PRIMARY KEY (`id`)

) ;

我们向其中插入数据,insert into test (id,name,class) values(1,'张三',1),(2,'李四',2),(3,'王二',3),(4,'貂蝉',2);

上面算是准备工作了,这张test表只有三个字段,其中id为主键,下面进入正题:我们先查询一条数据,得到的结果是这样的,

afbd6a69b3a994f290bd768204358e64.png

这没什么特别的,我们再来看一下查询这一条数据MySQL检索了几行

eb2b3414a2f215500163398e1cf55a17.png

图中的rows就代表了执行这个sql语句检索了几行,很明显,一步到位,只检索了一行,注意where条件中的id是主键,也就是主键索引。

下面我们再看一条查询语句

21b76b011b1a1040db44adb2c9dcf7c5.png

这次查询的where条件是class(不是索引,很普通的一个字段),检索了4行,也就是全表扫描了。

下面我们为class字段添加索引alter table test add index in_class(class);

我们给索引起的名字是in_class(随便起的),然后我们再执行一次上面的查询

bc36e40459d18ad993de41ac8bf2cedc.png

这次MySQL查询只检索了一行!!!惊不惊喜,意不意外,同样的查询语句,现在加了索引的查询速度比之前的提升了N倍,毕竟只需要检索一行,可谓是一步到位。

想象一下,如果一个表中的数据有上万、几十万甚至上百万的时候,不加索引全表扫描的效率那会非常的,,,,通过上面的实例相信你对MySQL已经有了一个更深度的理解了。这里就不过多对MySQL索引做科普了,本文章的目的就是让你直观的理解MySQL索引的好处以及MySQL索引到底什么。

对了,你操作的时候可能会遇到中文乱码的问题,这是因为MySQL命令台没办法输出utf8的字符,要解决这个中文乱码也很简单,只需一句代码。SET NAMES GB2312;

如果你还有问题,请留言哦。老规矩,你若问,我必答。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值