首页 > 数据库 >Mysql中的索引下推优化

Mysql中的索引下推优化

时间:2024-05-12 22:21:28浏览次数:14  
标签:LIKE lastname Mysql 下推 zipcode 索引 MySQL

当索引下推开启后,如果where子句中的部分条件可以通过索引中的列来进行过滤,MySQL会把这部分条件也下推给存储引擎。这里的关键是下推的这部分条件用于过滤而非定位数据。

直接看官方的例子:

SELECT * FROM people
  WHERE zipcode='95054'
  AND lastname LIKE '%etrunia%'
  AND address LIKE '%Main Street%';

假设people表上存在索引INDEX (zipcode, lastname, firstname),由于第二个条件lastname LIKE '%etrunia%'前后都有%所以不能使用索引。如果没有索引下推,那么MySQL只能让存储引擎完整的读取所有符合zipcode='95054'的行然后交给MySQL服务器进行筛选。有了索引下推,由于lastname也在索引中,所以MySQL可以把两个查询条件都传给存储引擎,存储引擎读取到所有符合zipcode条件的索引元组后通过索引中的数据先过滤一次,符合条件的再读取完整的行。如下图:

标签:LIKE,lastname,Mysql,下推,zipcode,索引,MySQL
From: https://www.cnblogs.com/narcissu5/p/18188294

相关文章

  • 厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中
    一、写在开头我们在上一篇文章中提到了通过EasyExcel处理Mysql百万数据的导入功能(一键看原文),当时我们经过测试数据的反复测验,100万条放在excel中的数据,4个字段的情况下,导入数据库,平均耗时500秒,这对于我们来说肯定难以接受,今天我们就来做一次性能优化。二、性能瓶颈分析一般的......
  • MySQL5.7安装详细过程--window系统
    一:MySQL5.7安装详细过程--window系统1.1、下载MySQL5.7安装包https://downloads.mysql.com/archives/community/1.2、将文件解压到盘符中你可以解压到你想解压的位置,放在C或其他盘符都可以。1.3、配置MySQL的环境变量由于我们下载的不是exe或者msi版本,不能直接双击安装,所以需要手......
  • Docker 部署MySQL
    1、创建配置目录mkdir-pMySQL目录/conf2、切换到配置目录cdMySQL目录/conf3、创建配置文件vimmy.cnf[client]#设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8mb4[mysql]#设置mysql客户端默认字符集default-character-set=ut......
  • MySQL Join原理分析(缓冲块嵌套与索引嵌套循环)
    场景假设A表(1000条数据)leftjoinB表(1000条数据)。嵌套循环(Nested-LoopJoin)极简概括:顾名思义多层循环叠加,由于MySQL条数数量有限,所用for循环而不用while,在MySQL中就是多层for循环。性能问题:MySQL使用这种作为join方式最简单,A表joinB表每次join查询都需要一百万次内部关联,每次......
  • java MySQL的in查询两个字段同时相等的多个数据查询
    在Java中想进行下面的查询,不想写循环一条条查selectid,name,address,age fromuserswherename='A' and address='addr1'selectid,name,address,age fromuserswherename='B' and address='addr2'selectid,name,address,age fromusers......
  • 贝壳面试:MySQL联合索引,最左匹配原则是什么?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • MySQL中的一些其他比较符
    一、在两者之间(可以看成数学中的闭区间)BETWEEN...AND...在两个值之间(包含)SELECTLAST_NAME,SALARYFROMemployeesWHERESALARYBETWEEN3500AND6000;二、匹配一个任意值列表IN(set)使用该关键字之后会给定一个列表,所取的值都在这个列表中间,在查询数据的时候,会对这个set中......
  • mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nona
    官方解释:ONLY_FULL_GROUP_BY是MySQL数据库提供的一个sql_mode,通过这个sql_mode来保证,SQL语句“分组求最值”合法性的检查.这种模式采用了与Oracle、DB2等数据库的处理方式。即不允许selecttargetlist中出现语义不明确的列.对于用到GROUPBY的select语句,查出......
  • linux离线安装mysql5.7
    准备工作下载安装包:mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz选定目录安装目录:/usr/local,将安装包上传至/usr/local目录下,通过ftp方式传输具体步骤cd/usr/local解压tar-zxvfmysql-5.7.38-linux-glibc2.12-x86_64.tar.gz重命名mvmysql-5.7.38-linux-glibc2.12-x86_......
  • mysql索引
    1.概述  索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。2.索引结构  MySQL的索引是在存......