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

MySQL索引从基础到原理,看这一篇就够了

  1. https://developer.aliyun.com/article/841106

  2. https://zhuanlan.zhihu.com/p/29118331

索引创建使用总结

因为索引对于改善查询性能的作用是巨大的,所以我们的目标是尽量使用索引。

1. 索引的创建

• 1、在用于 where 判断 order 排序和 join 的(on)字段上创建索引
• 2、索引的个数不要过多。——浪费空间,更新变慢。
• 3、区分度低的字段,例如性别,不要建索引。——离散度太低,导致扫描行数过多。
• 4、频繁更新的值,不要作为主键或者索引。 ——页分裂
• 5、组合索引把散列性高(区分度高)的值放在前面。——最左前缀匹配原则
• 6、创建复合索引,而不是修改单列索引。——组合索引代替多个单列索引(由于MySQL中每次只能使用一个索引,所以经常使用多个条件查询时更适合使用组合索引)
• 7、过长的字段,怎么建立索引?——使用短索引。
当字段值比较长的时候,建立索引会消耗很多的空间,搜索起来也会很慢。我们可以通过截取字段的前面一部分内容建立索引,这个就叫前缀索引。
create table shop(address varchar(120) not null);
alter table shop add key (address(12));
• 8、不建议用无序的值(例如身份证、UUID )作为索引——当主键具有不确定性,会造成叶子节点频繁分裂,出现磁盘存储的碎片化

2. 什么时候会用不到索引

• 1、索引列上使用函数(replace\SUBSTR\CONCAT\sum count avg)、表达式、 计算(+ – * /):
explain SELECT * FROM ‘t2’ where id+1 = 4;
• 2、字符串不加引号,出现隐式转换
explain SELECT * FROM ‘user’ where name = 136;
explain SELECT * FROM ‘user’ where name = ‘136’;
• 3、like 条件中前面带%
where 条件中 like abc%,like %2673%,like %888 都用不到索引吗?为什么?
explain select * from user where name like ‘wang%’;
explain select * from user where name like ‘%wang’;
过滤的开销太大,所以无法使用索引。这个时候可以用全文索引。
• 4、负向查询
NOT LIKE 不能:
explain select *from employees where last_name not like ‘wang’
!= (<>)和 NOT IN 在某些情况下可以:
explain select * from user where id not in (1)
explain select * from user where id <> 1
• 5.索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
• 6,排序的索引问题
MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
注意一个 SQL 语句是否使用索引,跟数据库版本、数据量、数据选择度都有关系。
其实,用不用索引,最终都是优化器说了算。
优化器是基于什么的优化器?
基于 cost 开销(Cost Base Optimizer),它不是基于规则(Rule-Based Optimizer),也不是基于语义。怎么样开销小就怎么来。

若有错误与不足请指出,关注DPT一起进步吧!!!

相关文章:

MySQL索引从基础到原理,看这一篇就够了

https://developer.aliyun.com/article/841106 https://zhuanlan.zhihu.com/p/29118331 索引创建使用总结 因为索引对于改善查询性能的作用是巨大的&#xff0c;所以我们的目标是尽量使用索引。 1. 索引的创建 • 1、在用于 where 判断 order 排序和 join 的(on)字段上创…...

普通高考预报名上传蓝底证件照手机自拍方法详解

普通高考预报名过程中&#xff0c;上传一张合规的蓝底证件照是必不可少的一步。本文将详细介绍如何使用手机自拍并使用工具来制作符合要求的蓝底证件照。注意&#xff0c;目前仅有广东等个别省份允许特定类型考生使用自拍照上传&#xff08;例如普高预报名阶段、学考报名&#…...

Webserver(2.3)exec函数族

目录 exec函数族介绍execl函数execlp函数 exec函数族介绍 c语言中没有重载&#xff0c;因为不允许同名函数 一系列功能相似的函数称为函数族 exec函数族的作用是根据指定的文件名找到可执行文件&#xff0c;并用它来取代调用进程的内容。 程序在运行的时候&#xff0c;fork一…...

LeetCode Hot100 - 子串篇

前言 挑战一个月刷完力扣的hot100&#xff0c;记录一下每题的思路~ 这次是子串相关的题目 &#xff08;1&#xff09;560. 和为 K 的子数组 ①暴力枚举&#xff0c;使用一个变量sum记录以l开头r结尾的情况 class Solution {public int subarraySum(int[] nums, int k) {int r…...

【Android】Convenient ADB Commands

Install adb install -r <path>Uninstall adb uninstall <pkg>Start adb shell am start -n <pkg>/.SplashActivityStop adb shell am force-stop <pkg>Reset adb shell pm clear <pkg>Reboot adb rebootShutdown adb reboot -p...

elementUI 时间控件控制时间选择

选择时间大于当前月或小于2024年一月禁止选择 <el-form-item label"成交月份:" label-width"105px" ><div class"block"><el-date-pickerv-model"formData.deal_month"type"month":picker-options"pick…...

什么是x86架构,什么是arm架构

什么是 x86 架构&#xff1f; x86 架构是一种经典的指令集架构&#xff08;ISA&#xff09;&#xff0c;最早由英特尔在 1978 年推出&#xff0c;主要用于 PC、服务器等领域。 它是一种复杂指令集计算&#xff08;CISC&#xff09;架构&#xff0c;支持大量的复杂指令和操作&…...

c语言水仙花,超简单讲解

效果 3或者大于3位数 每一位的位数次方相加等于 自身 例如 153 13 53 33 结果为112527 153 1634&#xff1a; 计算过程&#xff1a; 14643444112968125616341^4 6^4 3^4 4^4 1 1296 81 256 16341464344411296812561634 过程 求得单独将所有位数的正数拎出来…...

Flutter 13 网络层框架架构设计,支持dio等框架。

在移动APP开发过程中&#xff0c;进行数据交互时&#xff0c;大多数情况下必须通过网络请求来实现。客户端与服务端常用的数据交互是通过HTTP请求完成。面对繁琐业务网络层&#xff0c;我们该如何通过网络层架构设计来有效解决这些问题&#xff0c;这便是网络层框架架构设计的初…...

Python小白学习教程从入门到入坑------第二十课 闭包修饰器(语法基础)

一、递归函数 1.1 基本信息 递归函数是指一个函数在其定义中直接或间接地调用了自身 递归在解决许多问题&#xff08;如树的遍历、图的搜索、数学中的分治算法等&#xff09;时非常有用 在Python中&#xff0c;递归函数可以通过简单的语法来实现 然而&#xff0c;使用递归…...

Vue+element-ui实现网页右侧快捷导航栏 Vue实现全局右侧快捷菜单功能组件

Vue+element-ui实现网页右侧快捷导航栏 Vue实现全局右侧快捷菜单功能组件 可视区域没超过当前屏幕高度时候只显示三个菜单效果 可视区域超过当前屏幕高度时,显示可回到顶部菜单的,当然这个菜单显示条件可以自定义,根据需求设置 然后将这个整体功能创建为一个全局组件 代…...

如何配置,npm install 是从本地安装依赖

在 Node.js 中&#xff0c;要使npm install从本地安装依赖&#xff0c;可以按照以下步骤进行配置&#xff1a; 一、准备本地依赖包 确保你有本地的依赖包。这个依赖包可以是一个包含package.json文件的文件夹&#xff0c;或者是一个已经打包好的.tgz文件。 二、使用相对路径…...

Python画图3个小案例之“一起看流星雨”、“爱心跳动”、“烟花绚丽”

源码如下&#xff1a; import turtle # 导入turtle库&#xff0c;用于图形绘制 import random # 导入random库&#xff0c;生成随机数 import math # 导入math库&#xff0c;进行数学计算turtle.setup(1.0, 1.0) # 设置窗口大小为屏幕大小 turtle.title("流星雨动画&…...

Knife4j配置 ▎使用 ▎教程 ▎实例

knife4j简介 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试.参数和格式都…...

电子电气架构 --- 车载芯片现状

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所有人的看法和评价都是暂时的&#xff0c;只有自己的经历是伴随一生的&#xff0c;几乎所有的担忧和畏惧…...

Unity 二次元三渲二

三渲二 注意&#xff1a;Unity必须是2022.3LTS及以上和URP项目&#xff01;&#xff01;&#xff01; 下载三渲二插件 【如何将原神的角色导入Unity】全网最细致教程&#xff0c;全程干货。不使用任何收费插件&#xff0c;使用Spring Bone对头发和衣服进行物理模拟。_原神 步…...

echart实现地图数据可视化

文章目录 [TOC](文章目录) 前言一、基本地图展示2.数据可视化 总结 前言 最近工作安排使用echarts来制作图形报表&#xff0c;记录一下我的步骤&#xff0c;需求呈现一个地图&#xff0c;地图显示标签&#xff0c;根据业务指标值给地图不同省市填充不同颜色&#xff0c;鼠标放…...

网关三问:为什么微服务需要网关?什么是微服务网关?网关怎么选型?

文章整体介绍 本文旨在解答关于微服务网关的三个核心问题&#xff1a; 1&#xff09;为什么需要网关&#xff1f;也即在何种场景下应采用微服务网关以优化系统架构&#xff1b; 2&#xff09;什么是微服务网关&#xff1f;主要讲构成微服务网关的关键能力&#xff0c;包括但…...

Mybatis-plus解决兼容oracle批量插入

本博客借鉴网上很多大佬的答案&#xff0c;东拼西凑&#xff0c;最终在项目中完成批量插入&#xff0c;仅供参考~~~ 1. 自定义SQL注入器 新建一个名为EasySqlInjector的类&#xff0c;继承DefaultSqlInjector。 public class EasySqlInjector extends DefaultSqlInjector {O…...

Kaggle竞赛——灾难推文分类(Disaster Tweets)

目录 1. 准备工作2. 资源导入3. 数据处理4. 绘制词云图5. 数据可视化5.1 词数和字符数可视化5.2 元特征可视化5.3 类别可视化 6. 词元分析6.1 一元语法统计6.2 多元语法统计 7. 命名实体识别8. 推文主题提取9. 构建模型9.1 数据划分与封装9.2 模型训练与验证 10. 模型评估11. 测…...

nli-distilroberta-baseAI应用:心理健康聊天机器人对话逻辑连贯性监测

NLI DistilRoBERTa Base AI应用&#xff1a;心理健康聊天机器人对话逻辑连贯性监测 1. 项目概述 心理健康聊天机器人正成为越来越多人寻求心理支持的重要工具。然而&#xff0c;这类对话系统面临一个关键挑战&#xff1a;如何确保对话内容的逻辑连贯性&#xff1f;这正是nli-…...

新手也能上手!高效论文写作全流程AI论文软件推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;2026年AI论文软件按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景。 …...

ComfyUI图片生成视频大模型技术选型与实战:从原理到生产环境部署

最近在搞一个AI视频生成的项目&#xff0c;用到了ComfyUI这个可视化工作流工具。说实话&#xff0c;刚开始选模型的时候真是眼花缭乱&#xff0c;Stable Diffusion Video、ModelScope、RunwayML……每个都说自己好&#xff0c;但实际用起来坑真不少。今天就把我趟过的路和总结的…...

1564286-24-3,Cy5 DBCO SE,应用于生物分子标记、分子成像

一.名称英文名称&#xff1a;Cy5 DBCO NHS Ester&#xff0c;Cy5 DBCO SE&#xff0c;Cyanine5 DBCO NHS Ester&#xff0c;Cy5 Dibenzocyclooctyne NHS Ester中文名称&#xff1a;Cy5-二苯并环辛炔-NHS 酯&#xff0c;花菁染料Cy5-二苯并环辛炔-琥珀酰亚胺酯CAS 号&#xff1a…...

AS3935闪电传感器Arduino驱动库深度解析与工业级应用

1. 项目概述AS3935 是一款由 AMS&#xff08;现为 ams OSRAM&#xff09;推出的专用闪电检测传感器芯片&#xff0c;集成 RF 前端、数字信号处理器&#xff08;DSP&#xff09;、闪电算法引擎及 IC/SPI 接口&#xff0c;可实现对 40 km 范围内云地闪&#xff08;CG&#xff09;…...

FFXIV国际服中文补丁解决方案:零基础上手实战指南

FFXIV国际服中文补丁解决方案&#xff1a;零基础上手实战指南 【免费下载链接】FFXIVChnTextPatch 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIVChnTextPatch 你是否曾在《最终幻想XIV》国际服中因语言障碍错失关键剧情&#xff1f;是否因英文界面降低了游戏沉浸…...

5分钟掌握Axure RP多版本语言包管理:从部署到定制全流程

5分钟掌握Axure RP多版本语言包管理&#xff1a;从部署到定制全流程 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …...

Onekey:Steam游戏清单管理的自动化解决方案 | 玩家与开发者必备工具

Onekey&#xff1a;Steam游戏清单管理的自动化解决方案 | 玩家与开发者必备工具 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 当独立游戏开发者小林第三次因为手动复制Steam App ID出错而导致…...

Element-UI Loading动画实战:如何优雅处理路由跳转与请求拦截(附自定义图标技巧)

Element-UI Loading动画深度优化&#xff1a;从路由拦截到视觉定制的完整方案 在Vue技术栈项目中&#xff0c;Element-UI的Loading服务是提升用户体验的关键组件之一。当页面需要等待数据加载或路由跳转时&#xff0c;一个流畅的加载动画能有效缓解用户的焦虑情绪。本文将深入探…...

vLLM-v0.17.1部署教程:vLLM+NGINX实现SSL/TLS加密API服务

vLLM-v0.17.1部署教程&#xff1a;vLLMNGINX实现SSL/TLS加密API服务 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。它最初由加州大学伯克利分校的天空计算实验室开发&#xff0c;现已发展成为一个由学术界和工业界共同维护的社区项目。 这个框…...