首页 > 其他分享 >什么是索引的最左前缀法则

什么是索引的最左前缀法则

时间:2022-11-16 13:44:40浏览次数:42  
标签:法则 前缀 age 索引 SELECT name

最左前缀法则:如果索引有多列,如:联合索引,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列,否则将用不到索引。

EXPLAIN SELECT * FROM employees WHERE age = 22 AND position ='manager'。

EXPLAIN SELECT * FROM employees WHERE position = 'manager'。

EXPLAIN SELECT * FROM employees WHERE name = 'LiLei'。

1.1 最左前缀法则

上面我们将表name, age  , position 三个字段组成的联合索引,下面使用如下sql进行查询

 

 

 

 

思考,上面的那三个sql语句,那个能能使用索引,哪些不能?为什么?

 

 

1.2 分析

通过explain关键字分析,key有值,表示,走了联合索引,否则没有走索引

 

 

 

 

只有第一条sql能触发索引,因为,他符合最左前缀法则,

联合索引也是使用B+树的结构来存储数据的,where后面的查询条件,如果,首先是非name字段,如果是age=30,那么,

去查询b+树的时候,所有节点并不是根据age字段由小到大进行排序的,只能做全表扫描,因为,联合索引节点,是先根据name字段排序的。

 

标签:法则,前缀,age,索引,SELECT,name
From: https://www.cnblogs.com/weiqinshian/p/16895607.html

相关文章

  • MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...
    一、数据库结构优化(​​非常重要​​)1.1数据库结构优化目的1、减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表......
  • 第08章 索引和视图
    在SQLServer中,设计有效的索引(Index)是影响数据库性能的重要因素之一,合理的索引可以显著提高数据库的查询性能。视图是一个虚拟表,视图中数据来源于由定义视图所引用的表,......
  • 分布式搜索引擎01-- elasticsearch基础
    分布式搜索引擎01--elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强......
  • 分布式搜索引擎02-elasticsearch的数据搜索功能-DSL和RestClient实现搜索
    分布式搜索引擎02在昨天的学习中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。所以今天,我......
  • 分布式搜索引擎03-数据聚合
    分布式搜索引擎030.学习目标1.数据聚合聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高......
  • 【建议收藏】15755字,讲透MySQL性能优化(包含MySQL架构、存储引擎、调优工具、SQL、索引
    0.目录1)MySQL总体架构介绍2)MySQL存储引擎调优3)常用慢查询分析工具4)如何定位不合理的SQL5)SQL优化的一些建议1MySQL总体架构介绍1.1MySQL总体架构介绍引言MySQL......
  • 索引详解
    关于索引需要理解的几个点为什么要用索引?创建索引有哪些缺点?数据库索引的原理,为什么要用B+树,为什么不用二叉树?为什么推荐使用整型自增主键而不是选择UUID......
  • 二维前缀和
    ```#include<bits/stdc++.h>usingnamespacestd;intn,m,K,cnt;inta[510][510],f[510][510];intmain(){ cin>>n>>m>>K; for(inti=1;i<=n;i++) { for(intj=1;j<=m;j+......
  • mysql8创建组合索引
    https://wenku.baidu.com/view/63898d1d0a12a21614791711cc7931b764ce7b40.html?wkts=1668415162513&bdQuery=mysql8+%E7%BB%84%E5%90%88%E7%B4%A2%E5%BC%95https://www.c......
  • 数组操作索引得结果
    publicclassDemo1{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.println("学生人数:");......