MySQL-索引详解(二)

这篇具有很好参考价值的文章主要介绍了MySQL-索引详解(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

♥️作者:小刘在C站

♥️个人主页:小刘主页

♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生!

♥️树高千尺,落叶归根人生不易,人间真情

目录

3 索引分类

3.1 索引分类

 3.2 聚集索引&二级索引

 聚集索引选取规则:

 具体过程如下:

4 索引语法

1). 创建索引

2). 查看索引

3). 删除索引


3 索引分类

3.1 索引分类

MySQL 数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。
MySQL-索引详解(二)

 3.2 聚集索引&二级索引

而在在 InnoDB 存储引擎中,根据索引的存储形式,又可以分为以下两种:
MySQL-索引详解(二)

 聚集索引选取规则:

如果存在主键,主键索引就是聚集索引。

如果不存在主键,将使用第一个唯一( UNIQUE )索引作为聚集索引。
如果表没有主键,或没有合适的唯一索引,则 InnoDB 会自动生成一个 rowid 作为隐藏的聚集索
引。
聚集索引和二级索引的具体结构如下:
MySQL-索引详解(二)
聚集索引的叶子节点下挂的是这一行的数据 。
二级索引的叶子节点下挂的是该字段值对应的主键值。
接下来,我们来分析一下,当我们执行如下的 SQL 语句时,具体的查找过程是什么样子的。
MySQL-索引详解(二)

 具体过程如下:

. 由于是根据 name 字段进行查询,所以先根据 name='Arm' name 字段的二级索引中进行匹配查
找。但是在二级索引中只能查找到 Arm 对应的主键值 10
. 由于查询返回的数据是 * ,所以此时,还需要根据主键值 10 ,到聚集索引中查找 10 对应的记录,最
终找到 10 对应的行 row

 . 最终拿到这一行的数据,直接返回即可。

回表查询: 这种先到二级索引中查找数据,找到主键值,然后再到聚集索引中根据主键值,获取
数据的方式,就称之为回表查询

4 索引语法

1). 创建索引

CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (
index_col_name,... ) ;

2). 查看索引

SHOW INDEX FROM table_name ;

3). 删除索引

DROP INDEX index_name ON table_name ;
案例演示 :
先来创建一张表 tb_user ,并且查询测试数据。
create table tb_user(
id int primary key auto_increment comment '主键',
name varchar(50) not null comment '用户名',
phone varchar(11) not null comment '手机号',
email varchar(100) comment '邮箱',
profession varchar(11) comment '专业',
age tinyint unsigned comment '年龄',
gender char(1) comment '性别 , 1: 男, 2: 女',
status char(1) comment '状态',
createtime datetime comment '创建时间'
) comment '系统用户表';
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('吕布', '17799990000', 'lvbu666@163.com', '软件工程', 23, '1',
'6', '2001-02-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('曹操', '17799990001', 'caocao666@qq.com', '通讯工程', 33,
'1', '0', '2001-03-05 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('赵云', '17799990002', '17799990@139.com', '英语', 34, '1',
'2', '2002-03-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('孙悟空', '17799990003', '17799990@sina.com', '工程造价', 54,
'1', '0', '2001-07-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('花木兰', '17799990004', '19980729@sina.com', '软件工程', 23,
'2', '1', '2001-04-22 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('大乔', '17799990005', 'daqiao666@sina.com', '舞蹈', 22, '2',
'0', '2001-02-07 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('露娜', '17799990006', 'luna_love@sina.com', '应用数学', 24,
'2', '0', '2001-02-08 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('程咬金', '17799990007', 'chengyaojin@163.com', '化工', 38,
'1', '5', '2001-05-23 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('项羽', '17799990008', 'xiaoyu666@qq.com', '金属材料', 43,
'1', '0', '2001-09-18 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('白起', '17799990009', 'baiqi666@sina.com', '机械工程及其自动
化', 27, '1', '2', '2001-08-16 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('韩信', '17799990010', 'hanxin520@163.com', '无机非金属材料工
程', 27, '1', '0', '2001-06-12 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('荆轲', '17799990011', 'jingke123@163.com', '会计', 29, '1',
'0', '2001-05-11 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('兰陵王', '17799990012', 'lanlinwang666@126.com', '工程造价',
44, '1', '1', '2001-04-09 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('狂铁', '17799990013', 'kuangtie@sina.com', '应用数学', 43,
'1', '2', '2001-04-10 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('貂蝉', '17799990014', '84958948374@qq.com', '软件工程', 40,
'2', '3', '2001-02-12 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('妲己', '17799990015', '2783238293@qq.com', '软件工程', 31,
'2', '0', '2001-01-30 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('芈月', '17799990016', 'xiaomin2001@sina.com', '工业经济', 35,
'2', '0', '2000-05-03 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('嬴政', '17799990017', '8839434342@qq.com', '化工', 38, '1',
'1', '2001-08-08 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('狄仁杰', '17799990018', 'jujiamlm8166@163.com', '国际贸易',
30, '1', '0', '2007-03-12 00:00:00');
表结构中插入的数据如下:
MySQL-索引详解(二)
数据准备好了之后,接下来,我们就来完成如下需求:
A. name 字段为姓名字段,该字段的值可能会重复,为该字段创建索引。
CREATE INDEX idx_user_name ON tb_user(name);
B. phone 手机号字段的值,是非空,且唯一的,为该字段创建唯一索引。
CREATE UNIQUE INDEX idx_user_phone ON tb_user(phone);
C. profession age status 创建联合索引。
CREATE INDEX idx_user_pro_age_sta ON tb_user(profession,age,status);
D. email 建立合适的索引来提升查询效率
CREATE INDEX idx_email ON tb_user(email);
完成上述的需求之后,我们再查看 tb_user 表的所有的索引数据。

♥️关注,就是我创作的动力

♥️点赞,就是对我最大的认可

♥️这里是小刘,励志用心做好每一篇文章,谢谢大家文章来源地址https://www.toymoban.com/news/detail-487075.html

到了这里,关于MySQL-索引详解(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序--个人主页的制作

    1. 效果图: 2.页面wxml的布局逻辑 (1)代码: 3.页面wxss的设置 (1)代码: 1. 获取登录信息 (1)Userinfo:获取用户信息 (2)avatarUrl:用户头像 (3)nickName:用户昵称 (4)zh_CN:简体中文 (5)注意:这里是获取两次用户头像,因为背景也用的到头像 (6)样式的设置: 2

    2024年02月09日
    浏览(68)
  • [Android Studio] 个人主页界面的实现

    目录 接上篇:底部导航栏的实现 1.个人主页界面的设计:fragment_blank.xml 2.个人主页功能的实现类:BlankFragment.java 3.每日签到功能的实现 4.实现效果 5.图片素材  补充说明:注意配置AndroidManifest.xml文件 自定义弹窗布局文件:pop_up_signup.xml,用于显示签到成功 累计签到的天数,采

    2024年01月19日
    浏览(90)
  • html网页设计小作业(个人主页)

    目录 作品介绍: 效果展示 代码部分: 简易的个人网页小作业,只用了html+css 布局制作,没啥好说的,直接上图!!! Home 页面:  About页面:    Hobbies页面: Home界面: About页面:  Hobbies页面: oKK,就这么多啦。。

    2024年02月11日
    浏览(50)
  • 基于github制作个人学术网站(主页)

    首先找到一个学术模板,fork到远程仓库。academicpages,如果不是很清楚具体的步骤,可以参考保姆级教程。在github上对该网站代码修改不是很方便,肯定是在本地进行更新后push到远程仓库。 学会下载和安装就行,一路默认,可以先学习一下Git相关的原理及基础操作,可以参考

    2024年02月15日
    浏览(54)
  • 个人Scratch HTML程序合集 主页

    个人Scratch HTML程序合集 主页 此程序是本人制作的Scratch HTML程序合集的主页,使用HTML+CSS编写,整合了本人近期发布的转换为HTML的Scratch程序的内容,可以通过主页内的链接打开相应的程序和博客。主页在本地运行,大家可以在github.com下载主页文件及相关资源。 代码如下

    2024年02月16日
    浏览(48)
  • 抖音web版地址个人主页和视频地址

    https://www.douyin.com/user/MS4wLjABAAAAfLsItSD2WiJrsji1g_iZv-it6W2CcvBFkdUwMjTeSD4 MS4wLjABAAAAfLsItSD2WiJrsji1g_iZv-it6W2CcvBFkdUwMjTeSD4 是 sec_uid。 https://v.douyin.com/h17aA6H https://www.iesdouyin.com/share/user/MS4wLjABAAAAfLsItSD2WiJrsji1g_iZv-it6W2CcvBFkdUwMjTeSD4 MS4wLjABAAAAfLsItSD2WiJrsji1g_iZv-it6W2CcvBFkdUwMjTeSD4 是 sec_uid。 下面的写法

    2024年04月27日
    浏览(49)
  • 详细讲解如何在github上编辑个人主页?

     在 GitHub 上编辑个人主页可以让您展示您的项目、技能和个人信息,以及与其他开发者互动。以下是详细的步骤来在 GitHub 上编辑个人主页: 如果您还没有 GitHub 账户,首先需要注册一个。 使用您的用户名和密码登录到 GitHub。 您需要创建一个特殊的仓库,仓库名必须是 用户

    2024年02月13日
    浏览(39)
  • 【Vercel】教你部署imsyy/home个人主页

    本篇博客教你如何部署一个自己的个人主页 项目地址:https://github.com/imsyy/home 本文首发于 慕雪的寒舍 首先我们点击fork,将仓库复刻到自己的账户 随后进入vercel,点击 dashboard-add new-project 选择你复刻的仓库 然后什么都不用改,直接deploy 等待部署成功,点击domains,在这里添

    2024年02月07日
    浏览(112)
  • javaweb个人主页设计(html+css+js)

    目录 1 前言和要求 1.1 前言 1.2 设计要求 2 预览 2.1 主页页面 2.2 个人简介 2.3 个人爱好 2.4 个人成绩有代码,但是图片已省略,可以根据自己情况添加 2.5 收藏夹 3 代码实现  3.1 主页 3.2 个人简介 3.3 个人爱好 3.4 个人成绩(根据自己的情况添加) 3.5 收藏夹 4 可能要用的图片,

    2024年02月09日
    浏览(84)
  • 【Linux实验】将个人主页上传到服务器

    l 网页制作; l 熟悉 Linux FTP or scp 拷贝; l 熟悉 apache 权限配置。 l 创建个人主页; l 用 FTP 或 scp 上传服务器; l chmod 设置目录权限; l Web 访问。 略。 在个人目录下创建public_html文件夹: mkdir public_html 连接服务器: psftp open 172.27.85.106 输入账号密码: login as: stu2394 stu2394@17

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包