MySQL索引条件下推(ICP)有哪些使用限制?

分类:编程技术 时间:2024-02-20 15:45 浏览:0 评论:0
0
小编给大家分享一下MySQL索引条件下推(ICP)的使用限制。希望您读完本文后有所收获。我们一起来讨论一下吧!

ICP(索引条件下推)是MySQL利用索引(二级索引)元组的where条件和索引中的过滤字段从表中提取数据记录的优化操作。 ICP的思想是:存储引擎访问索引时,会检查索引中过滤字段的where条件(压入索引条件,压入索引条件)。如果索引元组中的数据不满足推送的索引条件,则将其过滤掉。这个数据记录。 ICP(优化器)将索引条件的处理从服务器层尽可能下推到存储引擎层。存储引擎利用索引过滤掉不相关的数据,只将满足索引条件的数据返回给服务器层。也就是说,数据过滤应该d 尽可能在存储引擎层进行,而不是将所有数据返回到服务器层,然后根据where条件进行过滤。

索引条件下推(ICP)是 MySQL 5.6 版本中的新功能。是一种在存储引擎层利用索引来过滤数据的优化方法。

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

b 当ICP开启时,如果某些where条件可以使用索引中的字段,MySQL Server会将这部分内容下推到引擎层。您可以使用索引过滤的where条件来过滤存储引擎层的数据。 ,而不是通过索引访问将所有结果传递到MySQL服务器层进行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条件的字段不在索引列中,仍然要读取整个表的记录到服务器进行where过滤。

5 ICP的加速效果取决于存储引擎中ICP过滤掉的数据比例。

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

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

读完这篇文章,相信您对“MySQL索引条件下推(ICP)的使用限制有哪些”有了一定的了解。如果您想了解更多相关知识,欢迎关注行业资讯频道,感谢您的阅读!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > MySQL索引条件下推(ICP)有哪些使用限制?

用户评论