暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

公共子表达式消除(Common Subexpression elimination,CSE)

原创 由迪 2020-08-26
6198

公共子表达式消除是一项启发式的查询转换技术,它将反意连接词(如 OR)连接的谓词进行合并,消除不必要的子表达式。
提示:公共子表达式消除可以由优化器参数"_eliminate_common_subexpr"控制。
image.png
image.png
上述例子中,转换器通过将 OR 连接的两个谓词表达式合并,从而减少了以连接操作。
公共子表达式消除无法从概要数据或执行计划中鉴别出来,但是可以从 11g 的 10053 事件跟踪可以发现公共子表达式消除的转换。
image.png

计数函数转变(Count Convertion)
计数函数转变是一项启发式的查询转换技术,它将表达式 COUNT(Column)转变为 COUNT(*)。
image.png

上面例子中,count(table_name)被转变为 COUNT(*)。
计数函数转变无法从概要数据或执行计划中鉴别出来,但是可以从 11g 的 10053 事件跟踪可以发现公共子表达式消除的转换。
image.png
注意,由于空值不会被计数,因此计数函数转变不会转换对允许空值的字段进行转换。

表达式和条件评估(Evaluation of Expressions and Conditions)
表达式和条件评估是一项启发式的查询转换技术,它将一些表达式转换为更加高效、语义上等价的表达式。
常量转换
将表达式计算出结果,用该结果作为常量替换原表达式。
image.png

上述例子中,表达式 10*10 被常量 100 所替换。
LIKE 转换
LIKE 本身是一个范围匹配操作,但是如果 LIKE 匹配的表达式中没有通配符(如%、_),则与“=”等价。
image.png
image.png

提示:上述执行计划输出是在 11g 当中。而在 10g 及之前版本,在谓词信息中看不出这一转换, 但执行计划相应的访问路径却是按照转换后得出的。

IN 转换
将 IN 操作符转换为 OR 连接表达式。
image.png
在上例中,谓词条件 USERNAME IN (:A, :B)被转换成(“USERNAME”=:A OR “USERNAME”=:B)
ANY/SOME 转换将 ANY/SOME 转换为 OR 连接表达式或者 EXISTS 子查询。示例 1:

image.png
在上例中,谓词条件 avg_row_len > any (:A,:B)被转换为谓词表达式(“AVG_ROW_LEN”>TO_NUMBER(:A) “AVG_ROW_LEN”>TO_NUMBER(:B))。a
示例 2:
image.png
上面示例将 SOME 转换为了 EXISTS 子查询,即与以下查询等价:
image.png
ALL 转换
将 ALL 转换为 AND 连接表达式、GREATEST 函数或者 NOT EXISTS 子查询。示例 1:
image.png
image.png
以上示例中,谓词条件 avg_row_len > ALL (:A,:B)被转换成了"AVG_ROW_LEN">TO_NUMBER(:A)
AND “AVG_ROW_LEN”>TO_NUMBER(:B)。
示例 2:
image.png
上述例子在 10.2.0.4 中运行,ALL 被转换成了 NOT EXISTS 子句。而在 11.2.0.1 当中,还能将
NOT EXISTS 子句进一步展开,转换成对空值敏感的反关联操作。
BETWEEN AND 转换优化器在任何情况下都会将 BETWEEN AND 转换为<=、>=
image.pngNOT 转换
优化器会对含有 NOT 操作的表达式进行逻辑转换。

上述例子中,转换器先将 not avg_row_len > ALL (:A,:B)转换为 avg_row_len <= ANY (:A,:B),然后将 ANY 转换为 OR 表达式。
逻辑传递优化器可以根据谓词之间的逻辑传递关系,将某个谓词条件中的表达式或常量传递给另外一个谓词条件。
image.png
上述例子中,根据 LOCK_DATE 与 EXPIRY_DATE 之间的关系(“LOCK_DATE”<“EXPIRY_DATE”), 将"EXPIRY_DATE"<:A 传递给了 LOCK_DATE。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论