文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【SQL应知应会】索引(一)• MySQL版

2023-08-16 14:28

关注

请添加图片描述

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流

本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

请添加图片描述

✅今天开始SQL的索引的篇章,同样我们会讲到MySQL和Oracle的索引,大家拭目以待吧
✳️今天这篇主要简单介绍了索引的概念和优缺点,同时直接进入主题——如何创建索引,同时我们会针对索引进行一些分类,而今天讲的是按照逻辑分类后的普通索引(单列索引)以及复合索引,分别讲了索引的创建和应用
✴️文章中提供了代码和很具体的截图,希望大家跟着一起学起来
希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
💻那么,快拿出你的电脑,跟着文章一起学习起来吧

1.1 索引的优点

1.2 索引的缺点

2.1 索引类型之逻辑分类

2.1.1普通索引(单列索引) 的创建

CREATE INDEX index_name ON table_name(col_name);
ALTER TABLE table_name ADD INDEX index_name(col_name);
CREATE TABLE news (    id int(11) NOT NULL AUTO_INCREMENT ,    title varchar(255)  NOT NULL ,    content varchar(255)  NULL ,    time varchar(20) NULL DEFAULT NULL ,    PRIMARY KEY (id),  -- 默认使用B树索引    INDEX index_name (title(255)) -- 默认使用B树索引)

2.1.2普通索引(单列索引) 的查看

CREATE TABLE `news` (  `id` int NOT NULL AUTO_INCREMENT,  `title` varchar(255) NOT NULL,  `content` varchar(255) DEFAULT NULL,  `time` varchar(20) DEFAULT NULL,  PRIMARY KEY (`id`),  KEY `index_name` (`title`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3

请添加图片描述

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for news-- ----------------------------DROP TABLE IF EXISTS `news`;CREATE TABLE `news`  (  `id` int(0) NOT NULL AUTO_INCREMENT,  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  `time` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  PRIMARY KEY (`id`) USING BTREE,  INDEX `index_name`(`title`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

2.1.3 复合索引(组合索引)的创建

  • 复合索引是在多个字段上创建的索引
  • 复合索引遵守**“最左前缀”原则**,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要。
create index index_name on table_name(col_name1,col_name2,...);
alter table table_name add index index_name(col_name,col_name2,...);

2.1.4 复合索引(组合索引)的应用

2.1.4.1 直接使用select *查询前面添加索引的表

explainselect * from emp

在这里插入图片描述

2.1.4.2 查询具体的字段

explainselect empno from emp

在这里插入图片描述

2.1.4.3 遵循最左前缀原则,对复合索引中的索引字段按照顺序进行查询

explainselect * from emp where empno = '7499'

请添加图片描述

explainselect * from emp where empno = '7499' and ename = 'ALLEN'

请添加图片描述

explainselect * from emp where empno = '7499' and ename = 'ALLEN' and deptno = '30'

请添加图片描述

2.1.4.4 遵循最左前缀原则,对复合索引中的索引字段不按照顺序进行查询

explainselect * from emp where ename = 'ALLEN' and deptno = '30' and empno = '7499' 

在这里插入图片描述

2.1.4.5 遵循最左前缀原则,对复合索引中的索引字段进行查询

explainselect * from emp where ename = 'ALLEN' and deptno = '30'

在这里插入图片描述

2.1.4.6 in & not in

explainselect * from emp where empno in (7499,7521)

请添加图片描述

explainselect * from emp where empno not in (7499,7521)

请添加图片描述

😘感谢大家耐心的看完这篇文章,这篇文章是MySQL索引的第1篇文章,我们在MySQL方面写了很多内容了,大家可以去我的专栏SQL应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧
🏡也可以加入我的社区一起学习呀
✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我

请添加图片描述

来源地址:https://blog.csdn.net/qq_40332045/article/details/132157130

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯