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

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流
本文收录于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应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧
🏡也可以加入我的社区一起学习呀
✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我

相关文章:
【SQL应知应会】索引(二)• MySQL版
欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 索引 • MySQL版 前言一、索引1.简介2.创建2.1 索引…...
Android 简单的视频、图片压缩工具
首页需要压缩的工具包 1.Gradle implementation com.iceteck.silicompressorr:silicompressor:2.2.3 2.添加相关权限(手机得动态申请权限) <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/> <uses-p…...
信息论、推理和机器学习算法之间交叉的经典例子
信息论、推理和机器学习算法之间交叉的经典例子: 熵和信息增益在决策树学习中的应用。信息增益利用熵的概念来评估特征的分类能力,从而指导决策树的增长。 交叉熵在神经网络训练中的广泛使用。它结合信息论与最大似然推断,用于度量预测分布与真实分布之间的距离。 变分推断常被…...
【多线程】网络原理初识
网络原理初识 1. 网络发展史1.2 独立模式1.3 网络互联1.3 局域网1.4 广域网 2. 网络通信基础2.1 IP地址2.2 端口号2.3 认识协议2.4 五元组2.5 协议分层2.5.1 什么是协议分层2.5.2 协议分层的好处2.5.2 OSI七层模型2.5.3 TCP/IP五层模型 2.6 封装和分用2.6.1 封装2.6.1.1 应用层…...
Android之ADB常用命令
15、查看ipv6 是否使能 sysctl -a | grep ipv6 | grep disable 13、以太网获取Ip、网关、子网掩码、域名等 adb shell 网卡信息:ifconfig eth0 dns1:getprop net.dns1 dns2:getprop net.dns2 12、屏幕分辨率:wm size 11、…...
低代码开发工具:JVS轻应用之间如何实现数据的调用?
在低代码开发平台中,如何实现应用之间的数据共享呢?最标准的方式是通过接口,本文介绍JVS轻应用如何实现将数据通过API输出、轻应用如何实现体内API数据的获取?实现方式如下图所示,不管是数据提供方,还是数据…...
在Java中对XML的简单应用
XML 数据传输格式1 XML 概述1.1 什么是 XML1.2 XML 与 HTML 的主要差异1.3 XML 不是对 HTML 的替代 2 XML 语法2.1 基本语法2.2 快速入门2.3 组成部分2.3.1 文档声明格式属性 2.3.2 指令(了解):结合CSS2.3.3 元素2.3.4 属性**XML 元素 vs. 属…...
Linu学习笔记——常用命令
Linux 常用命令全拼: Linux 常用命令全拼 | 菜鸟教程 一、切换root用户 1.给root用户设置密码 sudo passwd root 2.输入密码,并确认密码 3.切换到root用户 su:Swith user(切换用户) su root 二、切换目录 目录结构:Linux 系…...
PLUS操作流程、应用与实践,多源不同分辨率数据的处理、ArcGIS的应用、PLUS模型的应用、InVEST模型的应用
PLUS模型是由中国地质大学(武汉)地理与信息工程学院高性能空间计算智能实验室开发,是一个基于栅格数据的可用于斑块尺度土地利用/土地覆盖(LULC)变化模拟的元胞自动机(CA)模型。PLUS模型集成了基于土地扩张分析的规则挖掘方法和基于多类型随机…...
item_review-获得淘宝商品评论
一、接口参数说明: item_review-获得淘宝商品评论,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_review 名称类型必须描述keyString是调用key(点击获…...
如何读取文件夹内的诸多文件,并选择性的保留部分文件
目录 问题描述: 问题解决: 问题描述: 当前有一个二级文件夹,第一层是文件夹名称是“Papers(LNAI14302-14304)",第二级文件夹目录名称如下图蓝色部分所示。第三层为存放的文件,如下下图所示,每一个文件中,均存放三个文件,分别为copyright.pdf, submission.pdf, s…...
每天一道leetcode:1129. 颜色交替的最短路径(图论中等广度优先遍历)
今日份题目: 给定一个整数 n,即有向图中的节点数,其中节点标记为 0 到 n - 1。图中的每条边为红色或者蓝色,并且可能存在自环或平行边。 给定两个数组 redEdges 和 blueEdges,其中: redEdges[i] [ai, bi…...
原生js发送ajax请求---ajax请求篇(一)
在原生js中我们使用的是XMLHttpRequest对象来发送ajax请求 主要步骤就是: 1.创建XMLHTTPRequest对象 2.使用open方法设置和服务器的交互信息 3.设置发送的数据,开始和服务器端交互 4.注册事件 5.更新界面 (1) get方式 //步骤一…...
【ARM 嵌入式 编译系列 2.1 -- GCC 编译参数学习】
文章目录 1.1 GCC 编译参数1.1.1 GCC arm-noe-eabi- 介绍1.1.1.1 ARM 和 Thumb 指令集区别1.1.2 GCC CFLAGS 介绍1.1.3 GCC LDFLAGS 介绍1.1.4 CXXFLAGS 介绍上篇文章:ARM 嵌入式 编译系列 2 – GCC 编译过程介绍 下篇文章:ARM 嵌入式 C 入门及渐进 3 – GCC attribute((weak…...
C++教程 - How to C++系列专栏第3篇
关于专栏 这个专栏是优质的C教程专栏,如果你还没看过第0篇,点击C教程 - How to C系列专栏第0篇去第0篇 本专栏一致使用操作系统:macOS Ventura,代码编辑器:CLion,C编译器:Clang 感谢一路相伴…...
使用Edge和chrom扩展工具(GoFullPage)实现整页面截图或生成PDF文件
插件GoFullPage下载:点击免费下载 如果在浏览网页时,有需要整个页面截图或导出PDF文件的需求,这里分享一个Edge浏览器的扩展插件:GoFullPage。 这个工具可以一键实现页面从上到下滚动并截取。 一、打开“管理扩展”(…...
image has dependent child images
问题:很多none的镜像无法被删除 解决过程: 1、通过 docker image prune -f 提示可删除为 0 2、直接进行删除报错: docker rmi 8f5116cbc201Error response from daemon: conflict: unable to delete 8f5116cbc201 (cannot be forced) - im…...
Linux系统中基于NGINX的代理缓存配置指南
作为一名专业的爬虫程序员,你一定知道代理缓存在加速网站响应速度方面的重要性。而使用NGINX作为代理缓存服务器,能够极大地提高性能和效率。本文将为你分享Linux系统中基于NGINX的代理缓存配置指南,提供实用的解决方案,助你解决在…...
openCV项目开发实战--详细介绍如何改善夜间图像的照明(附python和C++源码)
文末附完整的代码实现下载链接 介绍 对于非摄影师来说,在光线不佳的条件下拍出好照片似乎很神奇。完成低光摄影需要技巧、经验和正确的设备的结合。在弱光下拍摄的图像缺乏色彩和独特的边缘。它们还遭受能见度差和深度未知的困扰。这些缺点使得此类图像不适合个人使用或图像处…...
rabbitmq的消息应答
消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成 了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消 息标记为删除。在这种情况下,突然有个消费者挂掉了…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...



