老师,我想问下,索引到底是什么?

老师,我想问下,索引到底是什么?

  1. 唯一索引和普通索引和主键索引都什么区别,分别有什么作用?

  2. 索引中的索引名称又有什么作用呢?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,

1、字段名称

2、索引名称查询不到数据,查询时就是使用字段名称,例如:id。

3、首先索引名称无法检索数据,查询数据时是通过表中的字段进行检索,例如以下语句中的where id=1

select * from where id=1;


为该字段创建索引后,再使用该字段进行检索效率要高的原因是:

没有为字段创建索引时,表中的数据没有特定的排列顺序,顺序就是随机无序的。


可以说,一张没有索引的数据表,就像一个只有书柜而没有索引卡片柜的图书馆,书库里面塞满了一堆乱七八糟的图书。当读者对管理员提交查询请求后,管理员就一头钻进书库,对照查找内容从头开始一架一柜的逐本查找。运气好的话,在第一个书架的第一本书就找到了,运气不好的话,要到最后一个书架的最后一本书才找到。


创建索引类似于为书柜创建了索引卡片,效率自然会变快呢~


如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-07-12 14:27:22

同学你好,这里给同学举个小例子:

如下图所示:

http://img1.sycdn.imooc.com//climg/5d282571000102a306190200.jpg

字段名称是id,category_id,name等上图标识的字段。

索引是为某一个字段上加上索引,使我们根据此字段查询时速度更快。

而索引名称就是为这个索引起一个名字。一般情况下,我们不会使用到索引名称。

例如:

ALTER TABLE `book` ADD INDEX index_name ( `id` )

这是为表book的id字段添加索引,索引名称是index_name。

在开发中,因为经常执行根据id字段查询数据,所以为id字段加上索引后,下面的查询查询语句速率就会提高。

select * from book where id=1;

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 China_Wang #1
    还是有点小小的不明白 1.我们查询的时候通常是用字段名称查询还是用索引名称查询呢? 2.既然索引名称和字段名称都可以查询,为什么不直接使用字段名称查询呢? 3.如果是索引名称检索比字段名称检索要快,那么原理是什么呢?
    2019-07-12 14:37:53
好帮手慕阿满 2019-07-10 15:27:37

同学你好,索引相当于一本书的目录,如果给一个字段设置唯一索引,那么该字段的值是不能重复的。如果是主键索引,默认该字段是唯一并且不为空,还可以给主键字段设置自增。索引中的索引名称就是标识,一个索引对应一个索引名称,根据该索引名称可以找到该索引。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 China_Wang #1
    那么,索引名称和字段名称又有什么区别?既然索引相当于是目录,意思就是查找某个字段的时候可以通过索引名称去查找。但是关键在于,查找的时候为什么不直接通过字段名称去查找呢?字段名称也不会重复吧,既然都是唯一标识,为什么还要设定索引名称呢?
    2019-07-12 12:15:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师