• 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
    
    
    
    在前面列表的所有例子中,它是可以的对于条件被转换成一个或者俄夺各直接比较的格式在一个列和一个常量

  • 相关阅读:
    【东师软工】第二次成绩排行榜
    博客(懒得在cnblog移了)
    elementUI el-tree 修改无子项的样式
    流文件下载方法
    2.2.3 核心模块--理解.NetCore Configuration 配置管理
    Centos7下安装部署Asp.Net Core多版本依赖环境
    LADP认证接入
    Identity Server基础
    浅析DevOps中结合IAST的落地介绍
    从Leetcode的回文子串中学习动态规划和中心扩散法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350192.html
Copyright © 2020-2023  润新知