MySQL--联合索引应用细节应用规范

目录

一、索引覆盖

1.完全覆盖

2.部分覆盖

3.不覆盖索引-where条件不包含联合索引的最左则不覆盖

二、MySQL8.0在索引中的新特性

1.不可见索引

2.倒序索引

三、索引自优化--索引的索引

四、Change Buffer

五、优化器算法

1.查询优化器算法

2.设置算法

3.索引下推 ICP

4.MRR:Multi Range Read

六、索引应用规范

1.建立索引的原则

2.不走索引的情况


一、索引覆盖

        以idx(a,b,c)为例

1.完全覆盖

        where a=  and b=  and c=

        where b=  and c=  and a=

        where a=  and b in()  and c=

        where a=  and b=  order by c=

        where a=  and b=  and c>/<

2.部分覆盖

        where a=  and b>/<  and c=

        where a=  and b=

        where a=

        where a= and c=

3.不覆盖索引-where条件不包含联合索引的最左则不覆盖

        where b=  and c=

        where b=

        where c=

二、MySQL8.0在索引中的新特性

1.不可见索引

        建索引难,删索引易,为了避免轻易删掉索引,可以设为不可见

        alter table city alter index idx_nn invisible;

2.倒序索引

        where a order by b,c desc-->b为正排,c为倒排

        这种情况在建立索引时可以---->idx(a,b,c desc)

三、索引自优化--索引的索引

        AHI:自适应的HASH索引,根据缓冲区中索引页的热度,自动生成HASH索引表,快速锁定热点索引页在内存中的位置
 

四、Change Buffer

        存储辅助索引的变更

        将来需要用到的时候,自动在内存中进行merge合并,得到id值是目的

        以前叫insert buffer,因为只对insert有效,现在对insert update delete都有效

五、优化器算法

1.查询优化器算法

        select @@optimizer_switch;

2.设置算法

        set global optimizer_switch='on/off';

3.索引下推 ICP

        例如:where a= and b> and c=,正常情况下这种联合索引被b拦截后不会走到c的索引,但开启索引下推后可以对c进行索引,这是由于:

        在mysql中,索引下推允许在存储引擎层过滤索引中的记录,而不是在server层进行,如果查询包含多个条件并且索引不是很精确时,索引下推可以在存储引擎层进行更多的过滤工作,从而减少不必要的IO.
        如何开启:set global optimizer_swith='index_condition_pushdown=on';

4.MRR:Multi Range Read

        辅助索引条件查询时,先扫描辅助索引,获得ID值,放在read_rnd_buffer中,由MRR进行排序后,回表查询

六、索引应用规范

1.建立索引的原则

        1)必须有主键,主键选择业务无关的列

        2)经常作为where条件列的要做索引,以及order by,group by,join on,distinct

        3)最好使用唯一值多的列作为索引列,如果索引列重复值较多,可以考虑使用联合索引

        4)列值长度较长的索引列,建议使用前缀索引 left(name,19) -->取name前19位

        5)降低索引条目,不创建没有用的索引,不常使用的索引要清理

        6)维护索引要避开业务繁忙期,用pt-osc

        7)使用联合索引最左原则

2.不走索引的情况

        1)没有查询条件,或者查询条件没建索引

                select * from t1;

                select * from t1 where 1=1;

        2)查询结果集是原表中大部分数据,15%-25%以上,查询的结果集如果超过了总行数25%,优化器就觉得没必要走索引了

        3)索引本身失效,统计信息不真实(过旧),对于表内容变化比较频繁的情况下,有可能会出现索引失效,一般是删除重建,如果有一条select语句平时查询很快,突然有一天很慢,应该是索引失效,统计信息不真实、

        4)查询条件使用函数在索引列上,或者对索引列进行运算,+ - * / !。算数运算、函数运算、子查询,都不走索引

        5)隐式转换导致索引失效,应引起重视,也是开发中常会犯的错误

                select * from t1 where num='110' ——>走索引

                select * from t1 where num=110  ——>不走索引

        6)like “%_”:百分号在前面不走索引

        

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

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

相关文章

2024年NGFW防火墙安全基准-防火墙安全功效竞争性评估实验室总结报告

Check Point 委托 Miercom 对 Check Point 下一代防火墙 (NGFW) 开展竞争性安全有效性测试&#xff0c; 选择的竞品分别来自 Cisco、Fortinet 和 Palo Alto Networks。对 Zscaler 的测试涉及他们的 SWG&#xff08;安全网关&#xff09;。测试内容包括验证防病毒、反恶意软件、…

SpringBoot+Vue开发记录(六)-- 后端配置mybatis

原型图什么的就先不管&#xff0c;后面再写。 本篇文章的主要内容就是springboot通过mybatis操作数据库实现增删改查。 重点是mybatis配置与相关文件数据&#xff0c;以后开新项目忘记了怎么配置的话可以再照着这个搞。 这算是最基础的部分了吧。 文章目录 一&#xff0c;配置…

基于STM32的自动宠物喂食器的Proteus仿真

文章目录 一、宠物喂食器1.题目要求2.思路2.1 OLED显示汉字2.2 DS1302模块2.3 液位传感器2.4 压力传感器和步进电机驱动 3.仿真图3.1 未仿真时3.2 开始仿真&#xff0c;OLED初始界面显示实时时间3.3 通过设置按键进入模式选择和喂食时间设置3.4 进入喂食时间设置3.5 设置好喂食…

计算机毕业设计Python+Spark+PyTroch游戏推荐系统 游戏可视化 游戏爬虫 神经网络混合CF推荐算法 协同过滤推荐算法 steam 大数据

毕业设计&#xff08;论文&#xff09; 基于SpringBoot的游戏防沉迷系统的设计与实现 摘 要 随着网络游戏市场的持续火爆,其最明显的负面影响----“网络游戏沉迷问题”已成为当前社会普遍关心的热点问题。根据2010年8月1日实施的《网络游戏管理暂行办法》&#xff0c;网络游…

代码随想录算法训练营第三十四天|860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

860.柠檬水找零 遇到账单20&#xff0c;优先消耗美元10&#xff0c;完成本次找零。因为5的用处更大&#xff0c;等到循环结束的时候&#xff0c;如果存在某个美元不够用的情况&#xff0c;那么就是无法找零。 406.根据身高重建队列 先考虑身高维度&#xff0c;将身高从大至小…

图书管理系统——Java版

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 顺序表的学习&#xff0c;点我 目录 图书管理系统菜单 基本框架&#xff1a; 书&#xff1a; 书架&#xff1a; 用户&#xff…

数字化转型必备:营销策划流程图,打造你的数字市场地图

制作营销策划流程图是一个系统化的过程&#xff0c;它可以帮助你清晰地规划和展示营销活动的各个阶段。 以下是制作营销策划流程图的步骤&#xff1a; 1.确定营销目标&#xff1a; 明确你的营销活动旨在实现的具体目标&#xff0c;比如提升品牌知名度、增加销售额、吸引新客…

Java进阶学习笔记25——Objects类

为啥比较两个对象是否相等&#xff0c;要用Objects的equals方法&#xff0c;而不是用对象自己的equals方法来解决呢&#xff1f; Objects&#xff1a; Objects类是一个工具类&#xff0c;提供了很多操作对象的静态方法供我们使用。 package cn.ensource.d14_objects;import ja…

python使用pandas操作xlsx

python操作xlsx有很多种方法&#xff0c;以前使用其他控件操作&#xff0c;使用这个pandas之后发现更好用。场景&#xff0c;我需要读取xlsx模板&#xff0c;然后根据模板去获取数据&#xff0c;根据用户要求导出指定的xlsx文件。 读取文件 data pd.read_excel(sleepStageAh…

Hadoop概览以及编译hadoop说明

一、Hadoop概述 Hadoop 是一个用于跨计算机集群存储和处理大型数据集的软件框架。它旨在处理大数据&#xff0c;即传统数据库无法有效管理的极其庞大和复杂的数据集。Hadoop不是传统意义上的数据仓库&#xff0c;因为它们的用途不同&#xff0c;架构也不同。Hadoop 是一个跨分布…

uniapp开发微信小程序问题集锦(1)

1,uniapp实现微信小程序手机号快速登陆 看uniapp的官方文档&#xff0c;之前用的是uni.login会返回一个短code&#xff0c;后端是用不了的&#xff0c;后面通过询问才知道因该是使用button的方法getphonenumber这样能够获取到手机号&#xff0c;并返回一个长code&#xff0c;这…

分割大模型论文阅读——SAM-Med2D

SAM-Med2D 期刊分析摘要引言相关工作方法将医学知识纳入 SAM从 SAM 过渡到 SAM-Med2D评估 SAM-Med2D实验与评估实施细节定量评价定性比较讨论与结论期刊分析 期刊名: ArXiv 期刊信息: 暂无

AWS之云从业者题库笔记

elasticity&#xff1a;弹性durable&#xff1a;耐用的&#xff1b;持久的You can also use CloudWatch in hybrid cloud architectures by using the CloudWatch Agent or API to monitor your on-premises resources.cost allocation tags&#xff1a;成本分配标签cose elimi…

Vue2基础及其进阶面试(二)

vue2的生命周期 删除一些没用的 App.vue 删成这个样子就行 <template><router-view/></template><style lang"scss"></style>来到路由把没用的删除 import Vue from vue import VueRouter from vue-router import HomeView from .…

JAVASE之类和对象(2)

哪怕犯错&#xff0c;也不能什么都不做。 主页&#xff1a;趋早–Step 专栏&#xff1a;JAVASE gitte:https://gitee.com/good-thg 接上部分&#xff0c;我们继续来学习JAVAEE类和对象。 引言&#xff1a; 这篇文章接上一篇&#xff0c;后半部分&#xff0c;结束类和对象 目录 …

Spring Boot 3.0:未来企业应用开发的基石

文章目录 一、Spring Boot 3.0的核心特性二、Spring Boot 3.0的优势三、如何在项目中应用Spring Boot 3.01.更新项目依赖2.调整代码结构3.测试和部署 《学习Spring Boot 3.0》内容简介作者简介目录内容介绍 随着技术的飞速发展&#xff0c;企业应用开发的需求也在不断演变。Spr…

爽!AI手绘变插画,接单赚爆了!

我最近发现一款名叫Hyper-SD15-Scribble的AI项目&#xff0c;可以实现一键手绘变插画的功能&#xff0c;而且它搭载了字节出品的超快速生成图片的AI大模型Hyper-SD15&#xff0c;可以实现几乎实时生成图片&#xff0c;有了它&#xff0c;拿去接一些手绘商单分分钟出图&#xff…

跟TED演讲学英文:How to escape education‘s death valley by Sir Ken Robinson

How to escape education’s death valley Link: https://www.ted.com/talks/sir_ken_robinson_how_to_escape_education_s_death_valley Speaker: Sir Ken Robinson Date: April 2013 文章目录 How to escape educations death valleyIntroductionVocabularySummaryTranscri…

华为云部署前端项目发生的事

今天刚买了一个云服务&#xff0c;想着部署一下前端项目&#xff1a; 使用的是 docker nginx 部署 部署方法&#xff0c;在以往的文章中有介绍&#xff0c;如有兴趣可以看看docker 部署&#xff1b; 结果发现部署成功之后&#xff0c;竟然无法访问&#xff0c;从命令来看&…

MySQL正则替换整个单词

\b 是正则表达式规定的一个特殊代码&#xff08;好吧&#xff0c;某些人叫它元字符&#xff0c;metacharacter&#xff09;&#xff0c;代表着单词的开头或结尾&#xff0c;也就是单词的分界处。虽然通常英文的单词是由空格&#xff0c;标点符号或者换行来分隔的&#xff0c;但…