8.2.1.5 Engine Condition Pushdown Optimization 引擎优化条件推入
这种优化提高了直接比较的效率在一个非索引列和一个常数,在这种情况下, 条件是被推入到存储引擎进行评估,
这种优化只能被NDB 存储引擎使用。
Mysql Cluster, 优化器能消除发送不匹配记录的需要通过网络在cluster的数据节点和MySQL Server 执行查询,
假设MySQL Cluster 表定义如下:
CREATE TABLE t1 (
a INT,
b INT,
KEY(a)
) ENGINE=NDB;
条件推入可以用于查询,如上图所示,其中包括非索引列和一个常数之间的比较
SELECT a, b FROM t1 WHERE b = 10;
The use of condition pushdown can be seen in the output of EXPLAIN:
mysql> EXPLAIN SELECT a,b FROM t1 WHERE b = 10G
***************** 1. row *****************
id: 1
select_type: SIMPLE
table: t1
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 10
Extra: Using where with pushed condition
However, condition pushdown cannot be used with either of these two queries:
然而,条件推入 不能用于在下面2个查询:
SELECT a,b FROM t1 WHERE a = 10;
SELECT a,b FROM t1 WHERE b + 1 = 10;
条件推入不适用于第一个查询,因为一个索引存在列a.(一个索引的访问方法会变得更有效,因此会选择条件推入)