0
点赞
收藏
分享

微信扫一扫

MySQL索引篇之索引是什么?

小飞侠熙熙 2022-05-04 阅读 65

[](()1.索引的定义


维基百科对数据库索引的定义:

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020110715004137.png?x-oss-process=image/watermark,type_ZmFuZ 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4NTI2NTcz,size_16,color_FFFFFF,t_70#pic_center)

数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有索引的话,我们要从500万行数据里面检索一条数据,只能依次遍历这张表的全部数据,直到找到这条数据。

但是我们有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种特殊的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到数据了。

[](()2.索引的类型


在MySQL的所有中支持三种索引类型

| 类型 | 描述 |

| — | :-- |

| Normal | 普通索引 |

| Unique | 唯一索引 |

| Fulltext | 全文索引 |

[](()Normal

也叫非唯一索引,是最普通的索引,没有任何的限制

直接创建索引

CREATE INDEX index_name ON table(column(length))

修改表结构的方式添加索引

ALTER TABLE table_name ADD INDEX index_name ON (column(length))

创建表的时候同时创建索引

CREATE TABLE table (

id int(11) NOT NULL AUTO_INCREMENT ,

title char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

content text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,

time int(10) NULL DEFAULT NULL ,

PRIMARY KEY (id),

INDEX index_name (title(length))

)

删除索引

DROP INDEX index_name ON table

[](()Unique

唯一索引要求键值不能重复。另外需要注意的是,主键索引是一种特殊的唯一索引,它还多了一个限制条件,要求键值不能为空。主键索引用primary key创建。

#创建唯一索引

CREATE UNIQUE INDEX indexName ON table(column(length))

#修改表结构

ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))

#创建表的时候直接指定

CREATE TABLE table (

id int(11) NOT NULL AUTO_INCREMENT ,

title char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

content text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,

time int(10) NULL DEFAULT NULL ,

PRIMARY KEY (id),

UNIQUE indexName (title(length))

[](()Fulltext

举报

相关推荐

0 条评论