MySQL Index Condition Pushdown(ICP)性能优化方法实例(2)_MySQL教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:MySQL order by性能优化方法实例
这篇文章主要介绍了MySQL order by性能优化方法实例,本文讲解了MySQL中order by的原理和优化order by的三种方法,需要的朋友可以参考下 前言 工作过程中,各种业务需求在访问数据库的时候要求有order by排序。有时候不必要的或者不合理的排序操作很可能导致数据库系统崩

  开启ICP 时,last_name 的like '%sig'条件可以通过索引字段last_name 进行过滤,在存储引擎内部通过与where条件的对比,直接过滤掉不符合条件的数据。该过程不回表,只访问符合条件的1条记录并返回给MySQL Server ,有效的减少了io访问和各层之间的交互。

  ICP 关闭时 ,仅仅使用索引作为访问数据的方式。

MySQL Index Condition Pushdown(ICP)性能优化方法实例

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

MySQL Index Condition Pushdown(ICP)性能优化方法实例

  四 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> explain select * from employees where first_name='Anneke' and last_name='Porenta' ;

  +----+-------------+-----------+------+---------------+--------------+---------+-------------+------+-----------------------+

  | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

  +----+-------------+-----------+------+---------------+--------------+---------+-------------+------+-----------------------+

  | 1 | SIMPLE | employees | ref | idx_emp_fnln | idx_emp_fnln | 94 | const,const | 1 | Using index condition |

  +----+-------------+-----------+------+---------------+--------------+---------+-------------+------+-----------------------+

  1 row in set (0.00 sec)

  mysql> explain select first_name,last_name from employees where first_name='Anneke' and last_name='Porenta' ;

  +----+-------------+-----------+------+---------------+--------------+---------+-------------+------+--------------------------+

  | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

  +----+-------------+-----------+------+---------------+--------------+---------+-------------+------+--------------------------+

  | 1 | SIMPLE | employees | ref | idx_emp_fnln | idx_emp_fnln | 94 | const,const | 1 | Using where; Using index |

  +----+-------------+-----------+------+---------------+--------------+---------+-------------+------+--------------------------+

  1 row in set (0.00 sec)

分享:MySQL slave_net_timeout参数解决的一个集群问题案例
这篇文章主要介绍了MySQL slave_net_timeout参数解决的一个集群问题案例,问题日志请见正文,本文使用slave_net_timeout参数解决了这个问题,需要的朋友可以参考下 【背景】 对一套数据库集群进行5.5升级到5.6之后,alter.log 报warning异常。 复制代码 代码如下: 2015-02-

共2页上一页12下一页
来源:模板无忧//所属分类:MySQL教程/更新时间:2015-05-30
相关MySQL教程