当前位置: 首页 > news >正文

mysql笔记——索引

索引

InnoDB采用了B+树索引结构。

相比于二叉树,层级更少,搜索效率高。

B树中叶子节点和非叶节点都会存储数据,导致段页式存储中一页存储的键值减少,指针也会减少,要同样保存大量数据,只能增加树的高度,导致性能降低。

相比于Hash索引,指出范围匹配和排序。

索引语法
  1. 唯一索引,保证索引列中的值都唯一:CREATE UNIQUE INDEX index_name ON table_name (column_name);
  2. 全文索引,支持全文搜索:CREATE FULLTEXT INDEX index_name ON table_name (column_name);
  3. 组合索引,多条件查询:CREATE INDEX index_name ON table_name (column1, column2);
  4. 主键会自动创建索引。

通过查看一个数据库中历史增删改查的频次,可以决定是否需要对其使用索引优化的策略。如果数据库访问以查询为主,就需要进行优化。如果以增删改为主,则不需要。

SQL性能分析

命令查看最近执行的语句的性能信息:

SHOW PROFILES;

使用具体的 Query_ID 查询每个阶段的时间消耗:

SHOW PROFILE FOR QUERY Query_ID;

根据消耗的时间分析和优化sql。

explain命令分析sql命令。

EXPLAIN 的输出包括以下字段:

  1. id
    表示查询中执行步骤的标识符,查询按照 id 值从上到下执行。

    • 单表查询通常只有一个步骤,id 为 1。
    • 多表查询时,id 越大优先级越高,表示优先被执行。
  2. select_type
    表示查询的类型,常见值包括:

    • SIMPLE:简单查询,无子查询或联合。
    • PRIMARY:主查询(存在子查询时)。
    • SUBQUERY:子查询。
    • DERIVED:派生表(子查询中的临时表)。
    • UNION:联合查询的第二个及后续部分。
  3. table
    查询涉及的表名称。

  4. type
    表示表的访问类型,性能由好到差排序为:

    • system > const > eq_ref > ref > range > index > ALL
      • ALL 表示全表扫描,性能最差。
      • 优化目标是尽量使用更高效的访问类型,如 refrange
  5. possible_keys
    查询中可能用到的索引。

  6. key
    查询实际使用的索引。如果未使用索引会显示 NULL

  7. key_len
    使用索引的长度,表示查询中使用的索引字段的字节数。

  8. ref
    显示索引列的比较条件,例如常量或某个列。

  9. rows
    估算需要扫描的行数。行数越多,查询越慢。

  10. Extra
    附加信息,描述优化器的其他决策和行为。常见值包括:

    • Using where:需要通过条件过滤数据。
    • Using index:全索引覆盖扫描,无需访问表。
    • Using filesort:需要额外的排序操作,性能可能较差。
    • Using temporary:需要创建临时表,通常发生在 GROUP BYORDER BY 操作中。
索引的使用规则——最左前缀法则

例如,联合索引(a,b,c)。查询需要从索引的最左列开始,并且不条约索引中的列。如果跳跃了某一列,后面的字段索引会失效。

索引失效的情况
  • 在索引列上进行运算
  • 字符串未加’'造成隐式类型转换
  • 没有按照最左前缀法则使用
  • like模糊匹配
  • or连接的条件一侧有索引,一侧没有
  • mysql自行评估。全表扫瞄速度比走索引块

image-20241204161143601

主键设计原则
  • 满足业务要求,尽量降低主键长度
  • 顺序插入数据,主键自增
  • 避免uuid做主键,或是其他自然主键
  • 业务操作中避免主键修改

糊匹配

  • or连接的条件一侧有索引,一侧没有
  • mysql自行评估。全表扫瞄速度比走索引块

[外链图片转存中…(img-QYOrycU5-1733740027341)]

主键设计原则
  • 满足业务要求,尽量降低主键长度
  • 顺序插入数据,主键自增
  • 避免uuid做主键,或是其他自然主键
  • 业务操作中避免主键修改

相关文章:

mysql笔记——索引

索引 InnoDB采用了B树索引结构。 相比于二叉树,层级更少,搜索效率高。 B树中叶子节点和非叶节点都会存储数据,导致段页式存储中一页存储的键值减少,指针也会减少,要同样保存大量数据,只能增加树的高度&a…...

React第十五节useReducer使用详解差异

useReducer() 的用法注意事项 1、 概述: useReducer() 常用于管理复杂的状态更新逻辑,特别是在状态更新依赖于多个条件或动作时,useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...

高效备考 Oracle 19c OCM 的建议

满足报考条件 考生需要先获得 19c OCP(Oracle Certified Professional)认证,并完成 Oracle 官方认可的 OCP 培训课程 制定学习计划 规划学习时间:根据考试时间和自己的日常安排,制定详细的学习计划,合理分配…...

01-Chromedriver下载与配置(mac)

下载地址: 这里我用的最后一个,根据自己chrome浏览器选择相应的版本号即可 ChromeDriver官网下载地址:https://sites.google.com/chromium.org/driver/downloads ChromeDriver官网最新版下载地址:https://googlechromelabs.git…...

网站流量和用户行为深度分析

关于网站流量数据集的探索 import pandas as pd import plotly.express as px import plotly.graph_objects as go import plotly.subplots as sp import matplotlib.pyplot as plt import seaborn as sns file_path /home/mw/input/webs4651/website_wata.csv data pd.rea…...

centOS7如何配置阿里云或者腾讯云yum源

众所周知,CentOS很多版本目前已经不再维护了,原本的在线yum源已经无法使用,所以需要我们配置其他的yum源。目前腾讯云或者阿里云的yum源都可以正常使用,所以本文教大家如何配置阿里云/腾讯云在线yum源。 阿里云yum源配置&#xf…...

洗鞋小程序(源码+文档+部署+讲解)

本文将深入解析“洗鞋小程序”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 为洗鞋提供服务,包含小程序和管理端。 本项目名称为洗鞋小程序,是一个基于小程序的在线洗鞋平台。该系统提供下单、订单管…...

MySQL|通过JSON_UNQUOTE实现MySQL中JSON数据的干净提取

文章目录 语法使用示例注意事项 JSON_UNQUOTE() 是 MySQL 中用于处理 JSON 数据类型的一个函数。它的主要作用是从 JSON 字符串中移除最外层的引号,这对于从 JSON 对象或数组中提取字符串值特别有用。 语法 JSON_UNQUOTE(json_string)json_string: 这是你想要去掉引…...

动态规划part01

文章参考来源代码随想录 理论基础 适用范围: 如果某一问题有很多重叠子问题,使用动态规划是最有效的。 与贪心算法的区别: 动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推…...

生活大爆炸版石头剪刀布(洛谷P1328)

生活大爆炸版石头剪刀布(洛谷P1328) [NOIP2014 提高组] 前言: 由于洛谷发布题解有限制,所以在CSDN上发布洛谷题解。 所有题解均是Java语言, 但是思路是相同的 每篇都是刷题日常,尽量讲清楚算法逻辑。 希望有问题还请大佬们指导! …...

【GOOD】DeGEM

ICLR2025 under review 看到不错的想法,学习一下 Decoupled Graph Energy-based Model for Node Out-of-Distribution Detection on Heterophilic Graphs 🐱🐶图上的OOD检测的工作是比较少的,相比于图像数据,图结构数…...

jenkins邮件的配置详解

Jenkins邮件的配置涉及多个步骤和细节,以下是详细的配置指南: 一、前期准备 确定邮件服务:明确Jenkins将要使用的邮件服务,如QQ邮箱、163邮箱、公司邮箱(基于Microsoft 365或Exchange Server)等。获取SMTP配置信息:根据邮件服务类型,获取相应的SMTP服务器地址、端口号…...

flask-socketio相关总结

flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库,有了这个库,就可以在flask应用中应用websocket协议,帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库,都能与服务器建立长连接…...

每日一题 LCR 097. 不同的子序列

LCR 097. 不同的子序列 使用动态规划就可以解决&#xff0c;重点是知道 动态规划的状态是如何转移的 class Solution { public:int numDistinct(string s, string t) {int ns s.size();int nt t.size();vector<vector<long>> dp(ns1,vector<long>(nt1,0)…...

合并区间C和C++的区别、布尔、整型、浮点、指针类型和0做比较、malloc、calloc、realloc的区别

56. 合并区间 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {//先按照每个区间的左元素排序&#xff0c;这样每个区间的左边界就固定了&#xff0c;所以之后考虑相邻的//区间是否是相交的就行 类似与栈的…...

设计模式-外观模式

背景 有一个家庭影院&#xff0c;有DVD播放器&#xff0c;投影仪&#xff0c;屏幕&#xff0c;音响&#xff0c;爆米花机&#xff0c;每一个设备都有一个遥控器。 传统思路&#xff1a; 创建一个客户端类&#xff0c;在这个类中创建所有设备的相关对象&#xff08;遥控器&am…...

嵌入式驱动开发详解14(SPI驱动架构实现)

文章目录 前言SPI简介SPI介绍SPI工作模式SPI特点 驱动开发驱动架构SPI控制器驱动SPI设备驱动SPI 设备和驱动匹配过程SPI其他相关API函数 参考文献 前言 SPI 是很常用的串行通信协议&#xff0c;可以通过 SPI 来连接众多的传感器&#xff0c;相比 I2C 接 口&#xff0c;SPI 接口…...

【保姆级系列:思科模拟器安装下载汉化教程大全】

文章目录 概述Packet Tracer下载Packet Tracer安装Packet Tracer使用EVE-NG下载&#xff1a;EVE-NG安装&#xff1a;EVE-NG使用&#xff1a; 概述 思科在网络界的地位是众所周知的。如果说在中美科技战中&#xff0c;华为代表CHN&#xff0c;那么思科就代表US&#xff0c;依然…...

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组)

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题&#xff08;中职组&#xff09; 1.基础设置和安全强化&#xff08;xxx 分&#xff09;1.3. 任务内容: 2.安全监测和预警&#xff08;xxx 分&#xff09;2.1. 任务一&#xff1a;建立目录安…...

QT 中基于 TCP 的网络通信

基础 基于 TCP 的套接字通信需要用到两个类&#xff1a; 1&#xff09;QTcpServer&#xff1a;服务器类&#xff0c;用于监听客户端连接以及和客户端建立连接。 2&#xff09;QTcpSocket&#xff1a;通信的套接字类&#xff0c;客户端、服务器端都需要使用。 这两个套接字通信类…...

React Native 速度提升 550%

React Native 爱好者们!🌟 您准备好听一些激动人心的消息了吗?React Native 刚刚发布了其最大的更新之一:一种全新的架构,彻底改变了我们构建移动应用程序的方式。如果您想知道这对您的项目和开发体验意味着什么,请继续关注!我们正在深入探讨这个改变游戏规则的事物;您…...

火语言RPA流程组件介绍--键盘按键

&#x1f6a9;【组件功能】&#xff1a;模拟键盘按键 配置预览 配置说明 按键 点击后,在弹出的软键盘上选择需要的按键 执行后等待时间(ms) 默认值300,执行该组件后等待300毫秒后执行下一个组件. 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型…...

数值分析—数值积分

研究背景 积分的数学解法为牛顿莱布尼兹公式&#xff0c;数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫ab​f(x)dxF(b)−F(a)&#xff0c;但应用该方法有如下困难&#xff1a; 1&#xff0c; f ( x ) f(x) f(x)的原函数有时不能用初等函…...

Next.js优化教程:优化字体加载

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 更多有关Next.js教程&#xff0c;请查阅&#xff1a; 前言 1. 字体加载的常见问题 1.1 什么是 FOIT 和 FOUT&#xff1f; 1.2 字体优化的核心目标 2. Next.js 字体优…...

功能篇:springboot中全局异常

在Java应用程序中实现全局异常处理是确保应用健壮性和用户体验良好性的重要一步。通过全局异常处理&#xff0c;你可以集中管理所有未捕获的异常&#xff0c;并以统一的方式响应它们。对于Web应用程序&#xff08;如使用Spring框架的应用&#xff09;&#xff0c;通常会创建一个…...

【go 】 select case 的用法

文章目录 1. 基本使用&#xff1a;监听多个通道&#xff0c;会阻塞2.带默认分支&#xff1a;非阻塞操作3. 永远监听多个通道4. 超时机制5. 关闭通道的处理6. context的关闭判断 相关文章&#xff1a; 【go】select 语句case的随机性 【go】 select case 超时机制(time.After)示…...

出海服务器可以用国内云防护吗

随着企业国际化进程的加速&#xff0c;越来越多的企业选择将业务部署到海外服务器上&#xff0c;以便更贴近国际市场。然而&#xff0c;海外服务器也面临着来自全球各地的安全威胁和网络攻击。当出海服务器遭受攻击时&#xff0c;是否可以借助国内的云服务器来进行有效的防护呢…...

前端权限控制

前端权限控制 一、路由权限&#xff08;控制页面访问&#xff09; vue // router.js const routes [{path: /dashboard,name: Dashboard,component: () > import(/views/Dashboard.vue),meta: { requiresAuth: true, roles: [admin, manager] }},{path: /user,name: Use…...

计算机组成原理(二):指令跳转

指令跳转&#xff08;Instruction Jump&#xff09;是计算机程序控制流的重要组成部分&#xff0c;通过改变程序的执行顺序实现循环、条件分支和函数调用等功能。 基本概念 跳转指令主要用来修改**程序计数器&#xff08;Program Counter, PC&#xff09;**的值&#xff0c;使…...

LoViT: 用于手术阶段识别的长视频Transformer|文献速递-生成式模型与transformer在医学影像中的应用

Title 题目 LoViT: Long Video Transformer for surgical phase recognition LoViT: 用于手术阶段识别的长视频Transformer 01 文献速递介绍 快速发展的手术数据科学&#xff08;SDS&#xff09;领域旨在通过先进利用手术室&#xff08;OR&#xff09;内医疗设备采集的数据…...

【传感器技术】第4章 力敏传感器,弹性敏感元件的基本特性,应变式压力传感器,电阻应变片的温度补偿,压阻式压力传感器,压电式压力传感器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

linux之vim

一、模式转换命令 vim主要有三种模式&#xff1a;命令模式&#xff08;Normal Mode&#xff09;、输入模式&#xff08;Insert Mode&#xff09;和底线命令模式&#xff08;Command-Line Mode&#xff09;。 从命令模式切换到输入模式&#xff1a;i&#xff1a;在当前光标所在…...

【LeetCode】每日一题 2024_12_9 判断国际象棋棋盘中一个格子的颜色(找规律)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;判断国际象棋棋盘中一个格子的颜色 最近力扣一直在出棋盘类的题目&#xff0c;这个月已经出了 9 天了&#xff0c;我倒要看看他是不是真能出一个月 代码与解题思路 先读题&#xff1a;题…...

HCL虚拟环境搭建并且支持ssh远程访问

1.连接设备 新建设备和host主机&#xff0c;连线&#xff0c;host主机选择本地网卡&#xff08;不选host-only网卡&#xff09; 2.启动设备&#xff0c;打开终端&#xff0c;按ctrlc 3.执行命令 <H3C>system-view [H3C]int g0/0 [H3C-GigabitEthernet0/0]ip address …...

批量验证指定漏洞思路和流程

免责申明 本文仅是用于学习研究POC的地址收集与漏洞验证原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法时习之丨网络安全在身边一图了解网络安…...

首次打开韦东山提供的Ubuntu-18.04镜像后,该做哪些事?

目录 01-测试有无网络02-配置最基本的嵌入式开发环境(安装tftp-nfs等)03-缩短关机强制结束进行时间04-关闭软件的自动更新05-未完待续... 01-测试有无网络 ping www.baidu.com 02-配置最基本的嵌入式开发环境(安装tftp-nfs等) 需要安装 tftp&#xff0c;nfs&#xff0c;vim …...

怎么才能让图片不能转发截图保存

发私密图片给好友又担心被截图保存甚至转发给第三人&#xff1f;有没有办法让发出去的图片不能转发、截图、保存&#xff1f;当然有&#xff01;今天教你一招&#xff0c;并且对方打开不需要下载任何软件&#xff0c;发出去对方点开就能看。 操作步骤 如何发送这样限制截图的图…...

设计模式-装饰器模式(结构型)与责任链模式(行为型)对比,以及链式设计

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1.装饰器模式1.1概念1.2作用1.3应用场景1.4特点1.5类与对象关系1.6实现 2责任链模式2.1概念2.2作用2.3应用场景2.4特点2.5类与对象关系2.6实现 3.对比总结 前言…...

outlook软件配置邮箱提示“到邮件服务器的加密连接不可用”

outlook软件配置邮箱提示“到邮件服务器的加密连接不可用” 问题描述&#xff1a; outlook软件里邮箱提示“已断开”或配置邮箱时提示“到邮件服务器的加密连接不可用”。 解决方案&#xff1a; 一、更改注册表&#xff08;可先导出备份&#xff09; winr&#xff0c;输入re…...

通过QT实现进度条随着读取文件增加

mythread循环给主线程发送信号实现主线程循环的功能 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QFile> #include <QFileDialog> #include <QTextStream> #include <QByteArray> #include "mythread.h"…...

构建高效可靠的分布式推理系统:深入解析控制器与模型服务的协同工作

在现代互联网应用中,随着用户需求的增长和技术的进步,单一服务器已经难以满足大规模并发请求的需求。为了提升系统的性能和可靠性,开发者们越来越多地采用分布式架构。本文将结合具体的代码示例,深入浅出地探讨如何构建一个高效的分布式推理系统,并详细解析其中的关键组件…...

洛谷B2082

数字统计 - 洛谷 数字统计 题目描述 请统计某个给定范围 [L,R] 的所有整数中&#xff0c;数字 2 出现的次数。 比如给定范围 [2,22]&#xff0c;数字2 在数 2 中出现了 1 次&#xff0c;在数 12 中出现 1 次&#xff0c;在数 20中出现 1次&#xff0c;在数 21 中出现 1 次&…...

HTML5系列(14)-- 链接与资源关系指南

前端技术探索系列&#xff1a;HTML5 链接与资源关系指南 &#x1f517; 致读者&#xff1a;探索资源加载的艺术 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 HTML5 的链接与资源关系管理&#xff0c;学习如何优化网站的资源加载策略&#xff0c;提升用户体验…...

ubuntu系统每天凌晨定时上传redis 备份数据到阿里云OSS上

1.压缩备份脚本 1.1 代码如下#!/bin/bash# redis_backup_compress.sh # 设置变量 BACKUP_DIR"/data/redis/backup" REDIS_DIR"/var/lib/redis" DATE$(date %Y%m%d_%H%M%S) BACKUP_FILE"redis_backup_${DATE}.rdb" COMPRESSED_FILE"redis_b…...

uniapp结合movable-area与movable-view实现拖拽功能

前言 因为公司业务开发需要拖拽功能。 ps&#xff1a;该功能只能针对高度一致的&#xff0c;如果高度不一致需要另外二开 演示 开始 <template><view style"height: 100%;"><movable-area :style"{width: 100%, height: allHeight px}"…...

JavaScript 单例模式的创建与应用

JavaScript 单例模式的创建与应用 单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;旨在确保一个类只有一个实例&#xff0c;并提供全局访问点。在 JavaScript 中&#xff0c;单例模式可以帮助我们避免多次创建同一个对象&#xff0c;节省资源&a…...

【HarmonyOS】 鸿蒙保存图片或视频到相册

【HarmonyOS】 鸿蒙保存图片或视频到相册 前言 鸿蒙中保存图片或者视频&#xff0c;或者其他媒体文件到设备的媒体库&#xff0c;可以是相册&#xff0c;也可以是文件管理等。共有两种方式&#xff1a; 需要应用申请受限权限&#xff0c;获取文件读写的权限&#xff08;调用…...

windows下nacos启动报错:java.lang.unsatisfiedLinkError: C:\USers\乱码AppData\xxx.dll

问题 看了许多别的帖子&#xff0c;大家都是因为缺少dll包&#xff0c;下载安装 Microsoft Visual C 2015 Redistributable 就可以。但我试过了不行。思来想去&#xff0c;之前正常的时候用的JDK版本是17&#xff0c;后面别的项目用1.8给切换回来了。然后尝试配置环境变量将JD…...

梳理你的思路(从OOP到架构设计)_基本OOP知识01

目录 1、“-Oriented” 的涵意 2、 ” -Oriented”、” -Based”、” -Driven”、” -Centered” 它们之间区别 3、 从对象(Object) 谈起 4、类的用途&#xff1a; 叙述软件对象 Android从程序员到架构师之路&#xff1a;梳理你的思路(从OOP到架构设计) 1、“-Oriented” …...

【C++图论 BFS算法】2467. 树上最大得分和路径|2053

本文涉及知识点 C图论 CBFS算法 LeetCode2467. 树上最大得分和路径 一个 n 个节点的无向树&#xff0c;节点编号为 0 到 n - 1 &#xff0c;树的根结点是 0 号节点。给你一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ai, bi] &#xff0c;表示节点 a…...