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


    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 = 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
    
    
    然而,条件下推不能用于下面两个查询:
    
    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 < 2G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: t1
             type: range
    possible_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] NULL
    
    column IN (value_list)   每个item 在value_list 是一个常量,常量值
    
    column BETWEEN constant1 AND constant2
    
    
    
    在前面列表的所有例子中,它是可以的对于条件被转换成一个或者俄夺各直接比较的格式在一个列和一个常量

  • 相关阅读:
    web项目中添加logger日志
    oracle 创建表空间
    从request中读数据流
    通过request获取ID地址的方法
    创建表空间的sql语句
    plsql点击不再提示后需重新提示
    js文件报错Syntax error on token "Invalid Regular Expression Options", no accurate correction
    java知识
    DevC++出现[Error] ld returned 1 exit status,如何解决才好呢?
    1
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350190.html
Copyright © 2020-2023  润新知