我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL Index Condition Pushdown(ICP)的使用限制有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL Index Condition Pushdown(ICP)的使用限制有哪些

小编给大家分享一下MySQL Index Condition Pushdown(ICP)的使用限制有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛字段在索引中的where条件从表中提取数据记录的一种优化操作。ICP的思想是:存储引擎在访问索引的时候检查筛选字段在索引中的where条件(pushed index condition,推送的索引条件),如果索引元组中的数据不满足推送的索引条件,那么就过滤掉该条数据记录。ICP(优化器)尽可能的把index condition的处理从server层下推到storage engine层。storage engine使用索引过过滤不相关的数据,仅返回符合index condition条件的数据给server层。也是说数据过滤尽可能在storage engine层进行,而不是返回所有数据给server层,然后后再根据where条件进行过滤。

Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式。

a 当关闭ICP时,index 仅仅是data access 的一种访问方式,存储引擎通过索引回表获取的数据会传递到MySQL Server 层进行where条件过滤。

b 当打开ICP时,如果部分where条件能使用索引中的字段,MySQL Server 会把这部分下推到引擎层,可以利用index过滤的where条件在存储引擎层进行数据过滤,而非将所有通过index access的结果传递到MySQL server层进行where过滤.

优化效果:ICP能减少引擎层访问基表的次数和MySQL Server 访问存储引擎的次数,减少io次数,提高查询语句性能。

ICP 开启时 ,MySQL将在存储引擎层 利用索引过滤数据,减少不必要的回表,注意 虚线的using where 表示如果where条件中含有没有被索引的字段,则还是要经过MySQL Server 层过滤。

 ICP的使用限制:

1 当sql需要全表访问时,ICP的优化策略可用于range, ref, eq_ref,  ref_or_null 类型的访问数据方法 。

2 支持InnoDB和MyISAM表。

3 ICP只能用于二级索引,不能用于主索引。

4 并非全部where条件都可以用ICP筛选。

   如果where条件的字段不在索引列中,还是要读取整表的记录到server端做where过滤。

5 ICP的加速效果取决于在存储引擎内通过ICP筛选掉的数据的比例。

6 5.6 版本的不支持分表的ICP 功能,5.7 版本的开始支持。

7 当sql 使用覆盖索引时,不支持ICP 优化方法。

看完了这篇文章,相信你对“MySQL Index Condition Pushdown(ICP)的使用限制有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL Index Condition Pushdown(ICP)的使用限制有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用 MySQL 视图有哪些限制?

尽管使用视图有多种好处,但使用 MySQL 视图仍存在以下限制 - 无法创建视图视图索引 - 在 MySQL 中,我们无法在视图上创建索引。这是因为当我们针对视图查询数据时,没有使用索引。 MySQL 会使视图无效 - 假设,如果我们删除或
2023-10-22

python中面向对象的使用限制有哪些

这篇文章主要介绍python中面向对象的使用限制有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为Pytho
2023-06-14

Linux中限制用户访问权限的方法有哪些

这篇文章主要介绍“Linux中限制用户访问权限的方法有哪些”,在日常操作中,相信很多人在Linux中限制用户访问权限的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中限制用户访问权限的方法
2023-06-13

MySQL流程控制函数的使用方法有哪些

这篇文章主要介绍“MySQL流程控制函数的使用方法有哪些”,在日常操作中,相信很多人在MySQL流程控制函数的使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL流程控制函数的使用方法有哪些
2023-06-22

mysql索引的使用原则有哪些

这篇文章将为大家详细讲解有关mysql索引的使用原则有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、最左前缀原则。一个联合索引(a,b,c),如果有一个查询条件是a,有b,那么他就走索引,如果有一
2023-06-15

mysql和mongodb的使用场景有哪些

MySQL适用于需要事务支持和复杂查询的应用场景,比如金融系统、电子商务平台等需要高度可靠性和数据一致性的应用。MongoDB适用于需要处理大量文档型数据的应用场景,比如社交网络、内容管理系统等需要灵活性和扩展性的应用。MySQL适用于需要
mysql和mongodb的使用场景有哪些
2024-04-09

MySQL的基本使用方法有哪些

今天小编给大家分享一下MySQL的基本使用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。MySQL 是最流行的关系
2023-06-27

mysql幻读的使用场景有哪些

当多个事务同时操作同一张表时,其中一个事务进行了插入或者删除操作,而另一个事务在此时进行查询操作,可能会出现幻读的情况。当一个事务对某个范围的数据进行了查询操作,同时另一个事务在该范围内进行了插入或者删除操作,可能会导致幻读。在多版本并发控
mysql幻读的使用场景有哪些
2024-04-24

MySQL的基础使用方法有哪些

这篇“MySQL的基础使用方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL的基础使用方法有哪些”文章吧。M
2023-06-27

编程热搜

目录