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

黑马程序员索引学习笔记

文章目录

    • 索引的分类
      • 从索引字段特性
      • 从物理存储
      • 从数据结构
      • 组成索引的字段个数
    • 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.kler.cn/news/150095.html

相关文章:

  • PTA:猜帽子游戏 ,C语言
  • open与openat的区别
  • Linux uname命令教程:如何打印linux操作系统名称和硬件的基本信息(附实例教程和注意事项)
  • SCI的写作前提——认识论文的本质
  • Python+requests+Jenkins接口自动化测试实例
  • linux查询某个进程使用的内存量
  • 复位电路的电阻电容的作用
  • 如何设置Linux终端提示信息
  • Qt 信号与槽简介
  • 案例:某电子产品电商平台借助监控易保障网络正常运行
  • unity shaderGraph实例-可交互瀑布
  • C++ day45 爬楼梯 零钱兑换 完全平方数
  • 大数据基础设施搭建 - Sqoop
  • AI搜索相关性在网站和APP上的应用
  • 致远M3 反序列化RCE漏洞复现(XVE-2023-24878)
  • C++算法入门练习——数据流第K大元素
  • JavaWeb | JSP访问数据库、JDBC操作
  • 学习计划计划执行记录
  • 【数据结构】——解决topk问题
  • 存储服务器特征是什么
  • 零基础学Python的第四天||字符串(1)
  • 力扣:184. 部门工资最高的员工(Python3)
  • python getattr() setattr() hasattr() delattr()内置函数详解
  • 智慧博物馆视频监控系统设计,可视化AI智能分析技术助力博物馆多维度监管
  • SparkContext初始化
  • 错误 LNK2001 无法解析的外部符号 __imp__CrtDbgReport
  • 短 URL 生成器设计:百亿短 URL 怎样做到无冲突?
  • 2023.11.28 MyBatis 中 #{} 和 ${} 的区别
  • 【ZEDSLAM】Ubuntu18.04系统ZED 2i双目相机SDK安装、联合标定、SLAM测试
  • 离散化笔记