加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL3:索引

发布时间:2020-12-12 00:03:42 所属栏目:MySql教程 来源:网络整理
导读:什么是索引 索引的含义和特点 2、 可以大大加快数据的查询速度,这也是创建索引最主要的原因 索引的分类 索引的设计原则 创建表的时候创建索引 table_name ( 解释一下: 1、UNIQUE、FULLTEXT和SPATIAL为可选参数,分别表示唯一索引、全文索引和空间索引 2、I

什么是索引

索引的含义和特点

2、可以大大加快数据的查询速度,这也是创建索引最主要的原因

索引的分类

索引的设计原则

创建表的时候创建索引

table_name (

解释一下:

1、UNIQUE、FULLTEXT和SPATIAL为可选参数,分别表示唯一索引、全文索引和空间索引

2、INDEX和KEY为同义词,二者作用相同,用来指定创建索引

3、col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择

4、index_name为指定索引的名称,为可选参数,如果不指定则MySQL默认col_name为索引值

5、length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度

6、ASC或DESC指定升序或者降序的索引值存储

下面创建一个普通索引,没有唯一性之类的限制,其作用只是加快对于数据的访问速度:

() () ()

EXPLAIN book yead_publication

解释下字段的意思:

1、select_type行指定所使用的SELECT查询类型,这里值为SIMPLE,表示简单的SELECT,不使用UNION或者子查询。其他可能的取值有:PRIMARY、UNION、SUBQUERY等

2、table行指定数据库读取的数据表的名字,它们按照被读取的先后顺序排列

3、type行指定了本数据表与其他数据表之间的关联关系,可能的去只有system、const、eq_ref、ref、range、index和All

4、possible_keys行给出了MySQL在搜索数据记录时可选用的各个索引

5、key行是MySQL使用的实际索引

6、key_len行给出了索引按字节计算的长度,key_len数值越小,表示越快

7、ref行给出了关联关系中另外一个数据表里的数据列的名字

8、rows行是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数

9、extra行提供了与关联操作有关的信息

看到,possible_keys和key的值都为year_publication,查询时使用了索引

2、创建唯一索引

()

SingleIdx(name(

()      (

(MyISAM

因为默认的存储引擎为InnoDB,而全文索引只支持MyISAM,所以这里创建表的时候要手动指定一下引擎。

看到这么创建,就在info字段上成功建立了一个名为FullTxtIdx的FULLTEXT全文索引,全文索引非常适合大型数据库,而对于小的数据集,它的用处可能比较小

在已经存在的表上创建索引

table_name (,...)

SHOW

book BoNameIdx(bookname(

book

book BkauthorIdx(author());

index_name table_name(,...)

BkNameIdx UniqidIdx BkAuAndInfoIdx book(author(),info( BkyearIdx book(year_publication);

此时我们SHOW一下INDEX,可以看到为5个字段建立了4个索引:

删除索引

table_name

比如把book的UniqidIdx给删除了:

book UniqidIdx;

index_name

比如我把BkAuAndInfoIdx这个组合索引给删了:

BkAuAndInfoIdx

这样就把book表里面的BkAuAndInfoIdx这个组合索引给删除了。

注意一个细节,删除表中的列时,如果要删除的列为整个索引的组成部分,则该列也会从索引中删除;如果组成索引的所有列都被删除,则整个索引将被删除

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读