首页 > 数据库 >什么是MySQL索引下推优化

什么是MySQL索引下推优化

时间:2023-10-21 18:02:23浏览次数:39  
标签:name age 下推 Server 索引 MySQL

索引条件下推优化(Index Condition Pushdown (ICP) ) 是MySQL5.6添加的,用于优化数据查询。

不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQL Server,MySQL Server进行过滤条件的判断。

当使用索引条件下推优化时,如果存在某些被索引的列的判断条件时,MySQL Server将这一部分判断条件下推给存储引擎,然后由存储引擎通过判断索引是否符合MySQL Server传递的条件,只有当索引符合条件时才会将数据检索出来返回给MySQL服务器。

例如一张表,建了一个联合索引(name, age),查询语句: select * from t_user where name like '张%' and age=10; ,由于name 使用了范围查询,根据最左匹配原则:

不使用ICP,引擎层查找到name like '张%' 的数据,再由Server层去过滤age=10这个条件,这样一来,就回表了两次,浪费了联合索引的另外一个字段age 。

什么是MySQL索引下推优化_MySQL

但是,使用了索引下推优化,把where的条件放到了引擎层执行,直接根据name like '张%' and age=10 的条件进行过滤,减少了回表的次数。

什么是MySQL索引下推优化_存储引擎_02

索引条件下推优化可以减少存储引擎查询基础表的次数,也可以减少MySQL服务器从存储引擎接收数据的次数。


标签:name,age,下推,Server,索引,MySQL
From: https://blog.51cto.com/u_16255459/7968489

相关文章

  • php js + laravel + mysql开发的手术麻醉临床信息系统源码
    手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生成麻醉的各种医疗文书,完成共享HIS、LIS、PACS和EMR等手术患者信息,从而提......
  • Mysql一文流
    一文读懂MySQL数据库1.MySQL简介1.1数据库介绍​数据库(Database,DB)从本质上讲就是一个文件系统,它能够讲数据有组织地集合砸一起,按照一定的规则长期存储到计算机的磁盘中,并且能够供多个用户共享和使用,同时,用户能够对数据库中的数据进行插入、删除、修改和查询操作​......
  • MySql安装与使用
    mysql是目前最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。MySQL是非常灵活的一款数据库,虽然它不是绝对完美,但它的灵活足够适应很多高要求的环境。为了发挥MySQL的性能并很好的使用它,我......
  • MySQL常用函数
    MySQL函数,是一种控制流程函数,属于数据库用语言。MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。一、数学函数1.1、函数概述MySQL函数是MySQL......
  • MySQL多主模型实战
    MySQLAB解决了数据备份的问题,但是当A由于某些原因宕机后,WEB服务器就没有办法在往数据库写或者读写了。线上业务中断了,完了,出事故了。这该怎么办呢?本节课主要给大家讲解如果处理因为MySQL主服务器宕机造成的业务中断问题,保障MySQL业务高可用。一、实验拓扑图二、架构原理1、M......
  • MySQL子查询
    在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。上层的查询块曾为父查询或......
  • MySQL约束
    约束是按照约定(特定)条件限制,管束等意思。约束的作用是添加、删除。在数据库中对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。一、约束概述1.1、什么是约束约束用于限制加入表的......
  • mysqldump之where用法
    文档课题:mysqldump之where用法.数据库:MySQL5.7.21应用场景:实际生产中,需要运用mysqldump导出指定条件的数据,并且以insert语句的形式呈现,如下为相关测试.1、数据库信息mysql>select*fromstaffs;+----+------+-----+---------+---------------------+|id|name|age|p......
  • 1130 - Host 'xxx' is not allowed to connect to this MySQL server
    安装mysql-5.7.32数据库时,使用Navicat工具连接数据库时,出现Host'xxx'isnotallowedtoconnecttothisMySQLserver,详情如下: 两种解决方案,任选一个即可:1、修改mysql数据库用户表数据 执行如下SQL命令:usemysql;updateusersethost='%'whereuser......
  • MySQL学习(7)连接的原理
    什么是连接连接就是把各个表中的记录都取出来进行依次匹配。若无过滤条件,连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,这样的结果集称为笛卡尔积。测试数据:CREATETABLEt1(m1INT,n1char(1));CREATETABLEt2(m2INT,n2char(1));......