K先生个人博客

当前位置:首页 > 爱技术 > 正文

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为主键,下面进入正题:我们先查询一条数据,得到的结果是这样的, 

mysql索引示例1

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

mysql索引示例2

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

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

mysql索引示例3

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

下面我们为class字段添加索引

alter table test add index in_class(class);

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

mysql索引示例4

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

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

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

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

作者K先生本文地址http://www.gold404.cn/info/41

版权声明:本文为原创文章,版权归 K先生个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!

文章评论

* 必填
可选
可选

评论列表