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

news2024/11/24 7:25:35

请添加图片描述

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

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

请添加图片描述

索引 • MySQL版

  • 前言
  • 一、索引
  • 1.简介
  • 2.创建
    • 2.1 索引类型之逻辑分类
      • 2.1.1普通索引(单列索引) 的创建
      • 2.1.2普通索引(单列索引) 的查看
      • 2.1.3 复合索引(组合索引)的创建
      • 2.1.4 复合索引(组合索引)的应用
      • 2.1.5 唯一索引的创建
      • 2.1.6 复合索引&唯一索引的比较
      • 2.1.7 主键索引的介绍(MySQL&Oracle)
      • 2.1.8 主键索引的创建
      • 2.1.9 主键索引 & 复合索引
      • 2.1.10 全文索引
  • 小结

前言

✅今天继续SQL的索引的篇章,同样我们会讲到MySQL和Oracle的索引,大家拭目以待吧
✳️今天接着上一篇【SQL应知应会】索引(一)• MySQL版的内容,讲的是按照逻辑分类后的唯一索引、主键索引、全文索引,其中还详细的讲述了复合索引与唯一索引的比较以及复合索引与主键索引的比较
✴️文章中提供了代码和很具体的截图,代码是为了减轻大家学习的难度,同时用截图可以更形象的让大家去理解知识点想要表达的意思,希望大家跟着一起学起来
💖希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
💻那么,快拿出你的电脑,跟着文章一起学习起来吧

一、索引

1.简介

👉:传送门💖索引的优缺点💖

1.1 索引的优点
1.2 索引的缺点

2.创建

👉:传送门💖2.1.1普通索引 ~ 2.1.4复合索引💖

2.1 索引类型之逻辑分类

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

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

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

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

👉:传送门💖2.1.1普通索引 ~ 2.1.4复合索引💖

2.1.4.1 直接使用select *查询前面添加索引的表
2.1.4.2 查询具体的字段
2.1.4.3 遵循最左前缀原则,对复合索引中的索引字段按照顺序进行查询
2.1.4.4 遵循最左前缀原则,对复合索引中的索引字段不按照顺序进行查询
2.1.4.5 遵循最左前缀原则,对复合索引中的索引字段进行查询
2.1.4.6 in & not in

2.1.5 唯一索引的创建

  • 唯一索引和普通索引类似,主要的区别在于,唯一索引限制列的值必须唯一,但允许存在空值只允许存在一条空值

  • 1.创建单个索引

CREATE UNIQUE INDEX index_name ON table_name(col_name);
  • 2.创建多个索引

CREATE UNIQUE INDEX index_name on table_name(col_name,...);
  • 3.修改表结构——单个
ALTER TABLE table_name ADD UNIQUE index index_name(col_name);
  • 4.修改表结构——多个
ALTER TABLE table_name ADD UNIQUE index index_name(col_name,...);
  • 5.创建表的时候直接指定索引
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),
  UNIQUE index_name_unique(title)
)

2.1.6 复合索引&唯一索引的比较

  • 情况1:表中有复合与唯一,对于存在的值
explain
select * from emp where empno = '7499';
  • 情况2:表中有复合与唯一,对于不存在的值
explain
select * from emp where empno = '99999';
  • 情况3:表中只有复合,对于不存在的值
explain
select * from emp where empno = '99999';

在这里插入图片描述

2.1.7 主键索引的介绍(MySQL&Oracle)

  • 主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值
  • 一般是在建表的时候同时创建主键索引
    • 导出建表语句的时候,在primary key后面会自带一个using btree

      • 在这里插入图片描述
    • 上图是MySQL的,如果是Oracle的话,会单独对主键进行create index

      • 在这里插入图片描述

2.1.8 主键索引的创建

  • 1.主键索引(创建表时添加)
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`) 
)
  • 2.主键索引(创建表后添加)
alter table tbl_name add primary key(col_name);
  • 3.示例
CREATE TABLE `order` (
  `orderId` varchar(36) NOT NULL,
  `productId` varchar(36) NOT NULL ,
  `time` varchar(20) NULL DEFAULT NULL
)
alter table `order` add primary key(`orderId`);

2.1.9 主键索引 & 复合索引

  • 如果在主键上建复合索引,对于主键索引和复合索引,在查找时会优先使用复合索引
  • 如果只有主键索引,使用主键索引是很快的,const级别,这是第二快的级别,最快的级别是null,即啥也没查到
explain
select * from emp where empno = 7369

在这里插入图片描述

2.1.10 全文索引

  • 在一般情况下,模糊查询都是通过 like 的方式进行查询。

但是,对于海量数据,这并不是一个好办法,在 like “value%” 可以使用索引,但是对于 like “%value%” 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题,但是对于海量数据,全表扫描是非常可怕的事情,所以 like 进行模糊匹配性能很差。这种情况下,需要考虑使用全文搜索的方式进行优化
在这里插入图片描述

  • 全文搜索在 MySQL 中是一个 FULLTEXT 类型索引。FULLTEXT 索引在 MySQL 5.6 版本之后支持 InnoDB
CREATE FULLTEXT INDEX index_fulltext_content ON table_name(col_name)
  • 注意: 默认 MySQL 不支持中文全文检索!

  • MySQL 全文搜索只是一个临时方案,对于全文搜索场景,更专业的做法是使用全文搜索引擎,例如ElasticSearch 或 Solr。

小结

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

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gradio——快速部署可视化人智能应用

前言 Gradio是一个开源的Python库,用于快速构建机器学习和数据科学演示的应用。它可以帮助你快速创建一个简单漂亮的用户界面,以便向客户、合作者、用户或学生展示你的机器学习模型。此外,还可以通过自动共享链接快速部署模型,并获…

IntelliJ IDEA热部署:JRebel插件的安装与使用

热部署 概述JRebel 概述 热部署,指修改代码后,无需停止应用程序,即可使修改后的代码生效,其有利于提高开发效率。 热部署方式: 手动热部署:修改代码后,重新编译项目,然后启动应用程…

【软件测试】Linux系统下安装jdk配置环境变量(详细步骤)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、安装环境 操作…

UGUI事件系统EventSystem

一. 事件系统概述 Unity的事件系统具有通过鼠标、键盘、游戏控制柄、触摸操作等输入方式,将事件发送给对象的功能。事件系统通过场景中EventSystem对象的组件EventSystem和Standalone Input Module发挥功能。EventSystem对象通常实在创建画布的同时被创建的&#xf…

c++杂谈-5

目录 一、一些c11新特性1. decltype关键字及函数后置返回类型2. 函数后置返回类型 二、c的内存模型三、函数指针和回调函数四、函数模版的注意事项 一、一些c11新特性 1. decltype关键字及函数后置返回类型 在C11中,decltype操作符,用于查询表达式的数…

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

2023年8月6日华为开发者大会2023(HDC.Together)圆满收官,伴随着HarmonyOS 4的发布,华为向开发者发布了汇聚所有最新开发能力的HarmonyOS NEXT开发者预览版,并分享了围绕“一次开发,多端部署” “可分可合&a…

通过Microsoft Loopback Adapter实现虚拟机和物理机的通信

问题 问:不借助路由器或交换机的情况下,能不能实现主机和虚拟及之间两个软件的通信呢?要求主机和虚拟及均有独立的ip地址,从而进行指定源的组播通信。 答:可以。通过借助虚拟网络适配器,不需要路由器或交…

深度思考rpc框架面经系列之三

6 一个rpc框架的请求调用的流程(小红书面试) 6.1 讲讲rpc调用原理,比如服务怎么发现,怎么调用,提供者怎么响应。怎么去请求,又怎么回来的 一个RPC(远程过程调用)框架的核心目的是允…

百度飞浆实战-手写数字识别

目录 参考建模过程1、数据加载和预处理2、模型的网络设计和开发模型组网 3、模型训练 代码实战1、打开aistudio找到项目 参考 视频教程 PaddleAPI DOC 建模过程 1、数据加载和预处理 飞桨框架帮助我们将MNIST数据集进行了内置 数据集名称: MNIST 数据集官网 &am…

2023-08-14 LeetCode每日一题(合并二叉树)

2023-08-14每日一题 一、题目编号 617. 合并二叉树二、题目链接 点击跳转到题目位置 三、题目描述 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会…

Android布局【RelativeLayout】

文章目录 介绍常见属性根据父容器定位根据兄弟组件定位 通用属性margin 设置组件与父容器的边距padding 设置组件内部元素的边距 项目结构主要代码 介绍 RelativeLayout是一个相对布局,如果不指定对齐位置,都是默认相对于父容器的左上角的开始布局 常见…

3D沉浸式旅游网站开发案例复盘【Three.js】

Plongez dans Lyon网站终于上线了。 我们与 Danka 团队和 Nico Icecream 共同努力,打造了一个令我们特别自豪的流畅的沉浸式网站。 这个网站是专为 ONLYON Tourism 和会议而建,旨在展示里昂最具标志性的活动场所。观看简短的介绍视频后,用户…

[足式机器人]Part5 机械设计 Ch00/01 绪论+机器结构组成与连接 ——【课程笔记】

本文仅供学习使用 本文参考: 《机械设计》 王德伦 马雅丽课件与日常作业可登录网址 http://edu.bell-lab.com/manage/#/login,选择观摩登录,查看2023机械设计2。 机械设计-Ch00Ch01——绪论机器结构组成与连接 Ch00-绪论0.1 何为机械设计——…

设计HTML5列表和超链接

在网页中,大部分信息都是列表结构,如菜单栏、图文列表、分类导航、新闻列表、栏目列表等。HTML5定义了一套列表标签,通过列表结构实现对网页信息的合理排版。另外,网页中还包含大量超链接,通过它实现网页、位置的跳转&…

ChatGPT爆火,会给教育带来什么样的影响或者冲击?

近来,人工智能聊天机器人ChatGPT连上热搜,火爆全网。ChatGPT拥有强大的信息整合能力、自然语言处理能力,可谓是“上知天文,下知地理”,而且还能根据要求进行聊天、撰写文章等。 ChatGPT一经推出,便迅速在社…

C语言——动态内存函数(malloc、calloc、realloc、free)

了解动态内存函数 前言:一、malloc函数二、calloc函数三、realloc函数四、free函数 前言: 在C语言中,动态内存函数是块重要的知识点。以往,我们开辟空间都是固定得,数组编译结束后就不能继续给它开辟空间了&#xff0…

机器学习:基本介绍

机器学习介绍 Hnad-crafted rules Hand-crafted rules,叫做人设定的规则。那假设今天要设计一个机器人,可以帮忙打开或关掉音乐,那做法可能是这样: 设立一条规则,就是写一段程序。如果输入的句子里面看到**“turn of…

maven工具-maven的使用-镜像仓库、本地仓、IDEA使用maven

Maven 一、为什么使用maven 添加第三方jar包jar包之间的依赖关系处理jar包之间的冲突获取第三方jar包将项目拆分成多个工程模块实现项目的分布式部署 二、maven简介 ​ Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的…

B树和B+树区别

B树和B树的区别 B树 B树被称为平衡树,在B树中,一个节点可以有两个以上的子节点。B树的高度为log M N。在B树中,数据按照特定的顺序排序,最小值在左侧,最大值在右侧。 B树是一种平衡的多分树,通常我们说m阶…

Base64编码-算法特别的理解

Base64 在DES加密和AES加密的过程中,加密的编码会出现负数,在ascii码表中找不到对应的字符,就会出现乱码。为了解决乱码的问题,一般结合base64使用 所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、…