第40讲:MySQL索引的语法以及基本使用
创始人
2024-02-11 03:11:43

文章目录

    • 1.索引的使用语法
    • 2.索引的基本使用
      • 2.1.准备一张数据表
      • 2.2.按照如下需求为表中的字段创建索引
      • 2.3.查看创建的索引
      • 2.4.删除索引
    • 3.验证使用索引前后的执行效率

1.索引的使用语法

1)创建索引

创建索引时,如果不指定索引的类型,默认就是常规索引,如果同时在一个索引中指定了多个字段,那么这个索引就是多字段的联合索引。

CREATE [UNIQUE | FULLTEXT] INDEX {index_name} ON {table_name} (字段1,字段2)

2)查看索引

SHOW INDEX FROM 表名

3)删除索引

DROP INDEX index_name ON 表名

2.索引的基本使用

2.1.准备一张数据表

准备一张员工信息表,用于索引的使用。

1)创建表

CREATE TABLE tb_user (id INT PRIMARY KEY auto_increment COMMENT '主键',xm VARCHAR ( 50 ) NOT NULL COMMENT '姓名',lxfs VARCHAR ( 11 ) NOT NULL COMMENT '联系方式',yx VARCHAR ( 100 ) COMMENT '邮箱',zy VARCHAR ( 11 ) COMMENT '专业',nl TINYINT UNSIGNED COMMENT '年龄',xb CHAR ( 1 ) COMMENT '性别:1表示男  2表示女',zt CHAR ( 1 ) COMMENT '状态:1表示在职  2表示离职',rzsj date COMMENT '入职时间' 
) COMMENT '人员信息表';

2)准备数据

INSERT INTO tb_user ( xm, lxfs, yx, zy, nl, xb, zt, rzsj ) VALUES ( '余伟', '13401004368', 'yuwei@jiangxl.com.cn', '软件工程', 37, '1', '1', '2009-02-02' );
INSERT INTO tb_user ( xm, lxfs, yx, zy, nl, xb, zt, rzsj ) VALUES ( '江睿基', '13900090963', 'jiangruiji@jiangxl.com.cn', '网络工程', 31, '1', '1', '2017-01-01' );
INSERT INTO tb_user ( xm, lxfs, yx, zy, nl, xb, zt, rzsj ) VALUES ( '张希', '15101030779', 'zhangxi@jiangxl.com.cn', '网络工程', 28, '1', '1', '2020-12-05' );
INSERT INTO tb_user ( xm, lxfs, yx, zy, nl, xb, zt, rzsj ) VALUES ( '张子云', '18301006454', 'zhangziyun@jiangxl.com.cn', '软件工程', 35, '1', '1', '2017-10-12' );
INSERT INTO tb_user ( xm, lxfs, yx, zy, nl, xb, zt, rzsj ) VALUES ( '陈国明', '15201254765', 'chenguoming@jiangxl.com.cn', '软件工程', 27, '1', '1', '2016-09-15' );
INSERT INTO tb_user ( xm, lxfs, yx, zy, nl, xb, zt, rzsj ) VALUES ( '王蕊蕊', '18800005497', 'wangruirui@jiangxl.com.cn', '软件工程', 31, '2', '1', '2018-10-23' );
INSERT INTO tb_user ( xm, lxfs, yx, zy, nl, xb, zt, rzsj ) VALUES ( '牛泽阳', '18701176856', 'niuzeyang@jiangxl.com.cn', '软件工程', 20, '1', '1', '2018-10-31' );

3)数据准备就绪

image-20220529132852869

2.2.按照如下需求为表中的字段创建索引

创建索引的规则:表中频繁查询的字段要设置索引,提高查询的效率。

1)为xm字段创建一个常规索引,查姓名的频率也比较高。

create后面不能任何参数默认创建的就是常规索引。

create index idx_user_xm on tb_user (xm);

2)为lxfs字段创建一个唯一索引,不允许有重复值。

唯一索引要在create后面加上unique参数。

create unique index idx_user_lxfs on tb_user (lxfs);

3)为zy、nl、zt等字段创建联合索引。

联合索引就是在常规索引的基础上,一个索引中同时增加了多个字段。

create index idx_user_zy_nl_zt on tb_user (zy,nl,zt);

在联合索引中,同时增加多个字段时,字段顺序是有讲究的。

如下图所示,这是查询表中的索引信息,可以看到有一列是seq_in_index,这一列表示索引字段的顺序,可以看到其他索引的这个字段都是1,表示这些索引只有一个字段,而在idx_user_zy_nl_zt这个索引有三条记录,且seq_in_index一列的值分被是1、2、3,这也就说明了当索引指定了多个字段时,就有相应的顺序。

image-20220529133749734

4)为yx字段创建常规索引,提高查询效率。

create index idx_user_yx on tb_user (yx);

2.3.查看创建的索引

show index from tb_user;
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table   | Non_unique | Key_name          | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| tb_user |          0 | PRIMARY           |            1 | id          | A         |           2 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| tb_user |          0 | idx_user_lxfs     |            1 | lxfs        | A         |           7 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| tb_user |          1 | idx_user_xm       |            1 | xm          | A         |           7 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| tb_user |          1 | idx_user_zy_nl_zt |            1 | zy          | A         |           2 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| tb_user |          1 | idx_user_zy_nl_zt |            2 | nl          | A         |           7 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| tb_user |          1 | idx_user_zy_nl_zt |            3 | zt          | A         |           7 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| tb_user |          1 | idx_user_yx       |            1 | yx          | A         |           7 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
7 rows in set (0.01 sec)

image-20220529133521363

Table一列表示索引属于哪张表。

Key_name是索引的名称,如果一个索引指定了多个字段,则会显示多行数据,如idx_user_zy_nl_zt这个索引。

seq_in_index是索引字段的顺序,如果一个索引中只有一个字段,那么只会显示1,如果有多个字段,则会有显示顺序。

Column_name是索引的字段。

Index_type是索引的数据结构,InnoDB引擎默认都是B+Tree数据结构。

2.4.删除索引

drop index idx_user_yx on tb_user;

3.验证使用索引前后的执行效率

dabiao这张表中name字段是没有添加索引的,下面以name字段为查询条件,来验证没有添加索引前的执行效率。

select * from dabiao where name = '江睿基';

查询耗时大概是2.442秒。

image-20220530215743666

下面为name字段添加索引,然后再来验证添加索引后,查询的效率如何。

create index idx_dabiao_name on dabiao (name);

再次执行相同的SQL观察执行的效率。

mysql> select * from dabiao where name = '江睿基'\G;
······
1 row in set (0.01 sec)

效率有了非常明显的提升,执行总耗时为0.01。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...