【发布时间】:2010-09-27 21:19:43
【问题描述】:
为了好玩,我今天在 Toad 中使用内置的 Optimizer for Oracle。它建议的优化之一如下
AND emp.pay_type = NVL('FT', UID)
代替
AND emp.pay_type = 'FT'
我对这里发生的事情以及因此而感到困惑,也对为什么这会提高性能感到困惑。由于 FT 是 SQL 查询中的字符串文字,因此永远不会为 NULL,为什么这会有什么不同呢?我猜这与该领域的现有索引有关,但在 Oracle 文档中找不到任何内容。
【问题讨论】:
-
无论 ut 是否提高性能,"AND emp.pay_type = NVL('FT', UID)" 和 "AND emp.pay_type = 'FT' 给出相同的结果。为什么使用 NVL在文字字符串上?