mysql 索引条件推送_MySQL 处理where条件 index condition pushdown索引条件下推
5.6之后,MySQL的优化技术
在使用二级索引过滤where条件时,减少回表的次数 以及 MySQL server层和引擎层交互的次数
1.数据库如何处理where条件
index key(index first key index last key)
确定sql查询在索引中的连续范围(起始+终止)
index filter
在起始到终止范围之内,使用索引过滤不符合条件的记录
table filter
不能使用索引处理了,回表(one by one),进行条件过滤
——————————
index first key 的提取规则
从索引(组合索引)的第一个键值开始
如果第一个键值存在,并且是=或者>=,则将该条件加入index first key,然后继续判断第二个键值,判断条件一样
如果遇到一个键值是>(范围之后全失效),则将该条件加入index first key之后,终止
如果第一个键不存在(带头大哥不能死),终止
index last key 的提取规则
与index first key 相反
index filter 的提取规则
从索引的第一个键值开始
如果索引的第一个键值为=,则跳过,判断第二个键值,判断条件一样
如果索引的第一列为> >= < <= 中的几种,则,跳过第一列,将其余where 条件中,索引想过的列全部加入index filter中
如果索引的第一列为> >= < <= 之外的条件,则,将该条件以及where条件中所有与索引相关的列全部加入index filter中
如果第一列不包含查询条件,则,将所有与索引相关的条件全部加入index filter中
table filter的提取条件
跟索引无关的列的查询条件,全部加入table filter中
2.index condition pushdown
ICP
索引条件下推
提前执行
icp的优化用于 range ref eq_ref等访问方法
innodb 和 myisam
idx_n_a(name,age)
select * from user where name < 'c' and age = 10
(1)不使用ICP
范围之后全失效,仅仅会用到索引的第一列
从索引中one by one地取出符合条件的记录,然后利用主键读取整行
对记录的完整行利用age=10这个条件进行判断
重复上述过程直至没有满足条件的行
(2)使用ICP
从索引中one by one地取出符合条件的记录,然后利用索引的其他字段的条件进行判断
如果符合索引上的全部条件,才利用主键索引读取完整行
使用了ICP之后,explain的结果extra列出现 using indexcondition
ICP的使用
(1)需要进行ICP优化的query语句,通常是where条件里面都是范围查询
(2)该查询语句必须用到二级索引
(3)如果是覆盖索引,直接index scan,就没有必要进行ICP了
(4)innodb 和 myisam都可以
(5)ICP优化策略用于range ref eq_ref
(6)5.6之后的版本
mysql 索引条件推送_MySQL 处理where条件 index condition pushdown索引条件下推相关推荐
- mysql pushdown_MySQL 5.6 中一个重要的优化——Index Condition Pushdown,究竟push down了什么...
1 问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语 ...
- MySQL 索引条件下推 Index Condition Pushdown
MySQL 索引条件下推 Index Condition Pushdown 出现在MySQL5.6及之后的版本中,能大幅提升查询效率,原因如下: 内容摘录自<深入理解MariaDB和MySQL& ...
- MySQL5.6之Index Condition Pushdown(ICP,索引条件下推)
ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛字段在索引中的where条件从表中提取数据记录的一种优化操作.ICP的思想是:存储引擎在访问索引的时候 ...
- MySQL - 索引下推 Index Condition Pushdown 初探
文章目录 生猛干货 Pre ICP 索引下推的含义 范围查找为啥不行? 搞定MySQL 生猛干货 带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试 Pre MySQL - 索 ...
- MySQL索引与Index Condition Pushdown(二)
实验 先从一个简单的实验开始直观认识ICP的作用. 安装数据库 首先需要安装一个支持ICP的MariaDB或MySQL数据库.我使用的是MariaDB 5.5.34,如果是使用MySQL则需要5.6版 ...
- MySQL Index Condition Pushdown
2019独角兽企业重金招聘Python工程师标准>>> 一.Index Condition Pushdown简介 ICP(index condition pushdown)是mysq ...
- mysql icp(Index Condition Pushdown) using index condition
ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛字段在索引中的where条件从表中提取数据记录的一种优化操作.ICP的思想是:存储引擎在访问索引的时候 ...
- MySQL Index Condition Pushdown 原理与解析
Index Condition Pushdown(ICP)是针对mysql使用索引从表中检索行数据时的一种优化方法. 原理: 在没有ICP特性之前,存储引擎根据索引去基表查找并将数据返回给mysql ...
- 【MySQL】MySQL5.6新特性之Index Condition Pushdown
一 概念介绍 Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式. a 当关闭ICP时,inde ...
最新文章
- jquery 临时存值
- 用上微软Bosque 困扰程序员30年的问题解决了
- SVM学习(一):SVM概念
- SQL Server索引进阶第十篇:索引的内部结构
- 详解异构计算FPGA基础知识
- uni app 调用网络打印机_uni-app封装一个request请求
- 通过binlog恢复mysql备份之前的数据
- cakephp 2.0 源码解读(一)
- java深度解析mp3文件
- php 使用phpize报错Cannot find config.m4. Make sure that you run ‘/usr/bin/phpize‘ in the top l
- php 地区表设计,php消息表设计
- php支付宝查询对账单下载地址,对账单下载 · 移动支付刷脸付API接口开发文档 · 看云...
- 全网目前最全python例子
- Visual Studio 2010之安装Visual Studio 2010 Service Pack 1
- pptpd搭建过程中 启动成功但不显示ppp0端口
- 编写一个USB接口程序,模拟计算机启动过程和关闭过程启动过程中要加载鼠标、键盘、麦克风等USB设备,具体要求如下: (1)定义一个接口USB,包含两个抽象方法turnOn()he turnOff(),
- 如何使用Axis 1.x 的WSDL2Java生成客户端
- 快速记忆数学知识的六个方法
- nginx降权+安装php
- KPW3 MEMORY ERROR维修直播
热门文章
- 第三次学JAVA再学不好就吃翔(part88)--ArrayList嵌套ArrayList
- 使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题
- 解决 Angular 官网下载的 library Schematics build 出错的办法
- SAP UI5 初学者教程之四:XML 视图初探试读版
- SAP Commerce Cloud Spartacus UI 读取 Component 元数据的 Action 设计
- SAP Spartacus翻译 i18n - internationalization 的工作原理
- 微信开发系列之九 - 在微信里直接创建SAP C4C的社交媒体消息
- 如何提取SAP UI5应用的技术信息
- 仅仅有单日的确诊总人数,无法触发SAP Analytics Cloud的Smart Discovery功能
- 把自定义url配置到SAP Fiori Launchpad上打开