黑马程序员索引学习笔记

news2024/11/28 22:49:07

文章目录

    • 索引的分类
      • 从索引字段特性
      • 从物理存储
      • 从数据结构
      • 组成索引的字段个数
    • InnoDB主键索的B+tree高度为多高呢?
    • explain执行计划
    • 最左匹配原则
    • 索引失效情况
    • SQL提示
    • 覆盖索引、回表查询
    • 前缀索引
    • 索引设计原则

索引的分类

从索引字段特性

主键索引、唯一索引、常规索引、全文索引
在这里插入图片描述

从物理存储

聚簇(集)索引、二级索引
在这里插入图片描述

从数据结构

B+树索引、Hash索引、全文索引

InnoDBMyISAMMemory
B+ tree索引YesYesYes
Hash索引NoNoYes
Full-text索引YesYesNo

组成索引的字段个数

单列索引、联合索引

InnoDB主键索的B+tree高度为多高呢?

在这里插入图片描述
图片中n表示主键个数,n+1表示指针数量。

explain执行计划

在这里插入图片描述

最左匹配原则

  • 如果索引了多列(联合索引),要遵守最左前缀法则。
  • 最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。
  • 如果跳跃某一列,索引将部分失效(后面的字段索引失效)。
  • 范围查询(不含等于)后面的字段不走索引。

注:查询字段存在即可和sql顺序无关

索引失效情况

  • 在索引字段上进行运算
explain select * from tb_user where substring(phone, 10, 2) = '15';
  • 字符串类型字段使用时,不加引号
-- 此处phone的值没有加引号
desc select * from tb_user where phone = 17799990015;
  • 头部模糊查询(即%在前面)匹配
-- 此处%在前面
explain select * from tb_user where profession like '%工程';
  • 用or分割开的条件,其中某一列没有索引,那么涉及的索引都不会被用到。
-- 必须id和name都有索引,才可以用到索引
desc select * from t_achievement_application where id = 66 or name = '张三';
  • 如果MySQL评估使用索引比全表更慢,则不使用索引。(参考范围查询、is null、is not null)
    is null、is not null是否走索引取决于表中的数据分布。

SQL提示

在这里插入图片描述
其中 use是建议MySQL用这个索引

覆盖索引、回表查询

尽量使用覆盖索引(查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到),减少select *。

Extra列描述
NULL: 需要回表查询
using index condition : 查找使用了索引,但是需要回表查询数据
using where; using index : 查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据

在这里插入图片描述
username、password建立联合索引,避免回表查询。

前缀索引

在这里插入图片描述

索引设计原则

在这里插入图片描述

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

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

相关文章

2023 年最新百度智能云千帆大模型 Node.Js 本地测试 / 微信机器人详细教程(更新中)

千帆大模型概述 一站式企业级大模型平台,提供先进的生成式AI生产及应用全流程开发工具链。直接调用ERNIE-Bot 4.0及其他主流大模型,并提供可视化开发工具链,支持数据闭环管理、专属大模型定制、大模型训练调优、插件编排等功能。 千帆大模型…

RHCE---给openlab搭建web网站

作业:请给openlab搭建web网站 网站需求: 1.基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站, 1、基于 www.openlab.com/student 网站访问学生信…

中国一年有457万人确诊癌症!医生提示:这4种食物,再爱吃也要管住嘴

癌症是威胁人类生命健康的重大疾病,癌症的发生因素一直以来都是专家学者重点探索的课题。据世卫组织最新公布的数据显示,食物或与癌症发生之间存在着密切的联系,某些食物的摄入过多可能会增加患癌症的风险,所以我们应该警惕&#…

LeetCode Hot100 124.二叉树中的最大路径和

题目: 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点…

佳易王个体诊所门诊电子处方软件试用版下载,佳易王电子处方软件的配方模板功能作用与教程

佳易王个体诊所门诊电子处方软件试用版下载,佳易王电子处方软件的配方模板功能作用与教程 1、软件试用版及教程可以点击下方的官网卡片 2、软件中有一个实用的功能,配方模板功能,在开处方单时候可以一键导入配方,节省时间。 而…

2024年天津天狮学院专升本市场营销专业《市场营销学》考试大纲

2024年天津天狮学院专升本市场营销专业高职升本入学考试《市场营销学》考试大纲 一、考试性质 《市场营销学》专业课程考试是天津天狮学院市场营销专业高职升本入学考试的必 考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《市…

2019年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

文章目录 2019年考研英语二真题SectionⅠ Use of EnglishSection II Reading ComprehensionText 121——细节信息题22——细节信息题23——细节信息题24——细节信息题25——词义题 Text 226——细节信息题27——细节信息题28——细节信息题29——细节信息题30——态度题 Text …

6.3 Windows驱动开发:内核枚举IoTimer定时器

内核I/O定时器(Kernel I/O Timer)是Windows内核中的一个对象,它允许内核或驱动程序设置一个定时器,以便在指定的时间间隔内调用一个回调函数。通常,内核I/O定时器用于周期性地执行某个任务,例如检查驱动程序…

基于helm的方式在k8s集群中部署gitlab - 升级(三)

接上一篇 基于helm的方式在k8s集群中部署gitlab - 部署(一),本篇重点对gitlab在k8s集群中进行升级 文章目录 1. gitlab 升级1.1 获取release1.2 下载目前版本的gitlab charts1.3 获取当前的values文件1.4 升级 2. gitlab数据库升级2.1 备份数…

【Linux】记录错误信息日志的实现

文章目录 前言一、 目录实现(log.hpp)二、目录的具体使用1.comm.hpp(管道初始化)2.sever.cpp(为读端且令其创建命名管道)3.client.cpp(为写端) 前言 我们这个设计的日志可以自定以输出的方向,可…

echart一键生成迁徙图

echart_move 介绍 echart迁徙图,选择起点和目的地生成迁徙图 软件架构 html echarts js 使用说明 将文件放到同一目录下打开index.html即可 默认是小飞机图标,如果想修改图标,将图片放到同一目录,如1.svg 代码修改为对应位…

windows本地dockr的clickhouse链接本地mysql服务,连接不上

不想看过成的,解决办法在最后面 报错信息: SQL 错误 [1000] [08000]: Poco::Exception. Code: 1000, e.code() 0, Exception: Connections to all replicas failed: test1localhost:3306 as user root (version 21.12.3.32 (official build)) , serve…

使用Selenium、Python和图鉴打码平台实现B站登录

selenium实战之模拟登录b站 基础知识铺垫: 利用selenium进行截图: driver.save_screenshot() 注意图片文件名要用png结尾. 关于移动: ActionChains(bro).move_to_element_with_offset()# 对于某个图像ActionChains(bro).move_by_offset(…

敢做敢当——歌手荆涛与歌曲《敢做敢当》的精神内核

在人生的道路上,多少次我们渴望前方,梦想在远方熠熠生辉,然而等待我们的,却往往是昨日的辉煌。面对这样的境遇,我们应该如何选择?荆涛的歌曲《敢做敢当》给出了我们一个明确的答案。 一、风中伫立&#xff…

LeetCode198.打家劫舍

打家劫舍和背包问题一样是一道非常经典的动态规划问题,只要做过几道动态规划的题,这道题简直就非常容易做出来。我应该花了10来分钟左右就写出来了,动态规划问题最重要的就是建立状态转移方程,就是说如何从上一个状态转移到下一个…

Matlab数学建模算法详解之混合整数线性规划 (MILP) 算法(附完整实现代码)

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

Python 进阶(十一):高精度计算(decimal 模块)

《Python入门核心技术》专栏总目录・点这里 文章目录 1. 导入decimal模块2. 设置精度3. 创建Decimal对象4. 基本运算5. 比较运算6. 其他常用函数7. 注意事项8. 总结 大家好,我是水滴~~ 在进行数值计算时,浮点数的精度问题可能会导致结果的不准确性。为了…

【研究中】sql server权限用户设置23.11.26

--更新时间2023.11.26 21:30 负责人:jerrysuse DBAliCMSIF EXISTS (select * from sysobjects where namehkcms_user)--判断是否存在此表DROP TABLE hkcms_user CREATE TABLE hkcms_user (id int primary key identity(1, 1),username char(32) NOT N…

【多线程】-- 03 龟兔赛跑案例线程创建方法之三:Callable接口

多线程 2 线程创建 【续】2.2 龟兔赛跑案例 首先需要一个赛道距离,然后会距离终点越来越近判断比赛是否结束打印出胜利者龟兔赛跑开始故事中是乌龟获胜,兔子需要睡觉,所以要模拟兔子睡觉最终,乌龟赢得比赛 package com.duo.de…

【Spring MVC】Filter 过滤器异常处理 HandlerExceptionResolver 分析

文章目录 前言版本说明测试 Demo1、自定义过滤器 DemoFilter2、自定义业务异常 ServiceException3、自定义异常处理类 DemoExceptionHandler4、DemoController5、请求测试 问题分析1、日志打印记录2、Debug 方法 解决方案1、修改自定义过滤器2、请求测试 解决方案分析1、日志打…