8.2.1.5 Engine Condition Pushdown Optimization 引擎条件下推优化

来源:互联网 发布:数据分析师证书含金量 编辑:程序博客网 时间:2024/06/05 04:51
8.2.1.5 Engine Condition Pushdown Optimization   引擎条件下推优化这种优化改善了直接比较在一个非索引列和一个常量比较的效率。在这种情况下, 条件是 下推到存储引擎用于评估,这个优化智能用于NDB存储引擎MySQL 集群,这个优化可以消除需要发送非匹配的记录通过网络在cluster的数据节点和MySQL Server假设 MySQL Cluster  表是定义如下:CREATE TABLE t1 (    a INT,    b INT,    KEY(a)) ENGINE=NDB;条件下推可以用于查询如下,包含一个比较在非索引列和一个常量SELECT a, b FROM t1 WHERE b = 10;条件下推的使用可以从EXPLAIN 输出:mysql> EXPLAIN SELECT a,b FROM t1 WHERE b = 10\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: t1         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 10        Extra: Using where with pushed condition然而,条件下推不能用于下面两个查询:SELECT a,b FROM t1 WHERE a = 10;SELECT a,b FROM t1 WHERE b + 1 = 10;条件下推不适用于第一个查询因为一个index 存在在列a,(一个Index 访问方法会更加有效率因此会优先选择)条件下推不能用于第2个查询是因为 比较涉及非索引列是对的(然而,条件下推可以应用如果你降低b+1=10 为b=9)条件下推也可以被调用当一个索引列是和一个常量比较使用>或者<操作符mysql> EXPLAIN SELECT a, b FROM t1 WHERE a < 2\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: t1         type: rangepossible_keys: a          key: a      key_len: 5          ref: NULL         rows: 2        Extra: Using where with pushed condition其他支持的比较用于条件下推如下:1.column [NOT] LIKE pattern模式必须是一个字符串包含匹配的模式column IS [NOT] NULLcolumn IN (value_list)   每个item 在value_list 是一个常量,常量值column BETWEEN constant1 AND constant2在前面列表的所有例子中,它是可以的对于条件被转换成一个或者俄夺各直接比较的格式在一个列和一个常量

0 0
原创粉丝点击