可用版本:Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17

COUNT(*)标量子查询比较

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

当比较计算 COUNT(*)标量子查询 与单个值时,更弱的优化器可能更喜欢等效的 EXISTS 谓词,如 这篇关于 COUNT(*) vs EXISTS 的博客文章 中所示。

此转换仅在特定情况下应用,包括

  • 在没有 UNION 和其他集合操作的情况下
  • 在没有 GROUP BYHAVING 的情况下
  • 仅适用于 COUNT(*),不适用于 COUNT(expr)(有关这种情况,请参阅 COUNT(expr) 标量子查询比较

使用 Settings.transformPatternsScalarSubqueryCountAsteriskGtZero,可以实现以下转换

-- With Settings.transformPatternsScalarSubqueryCountAsteriskGtZero active, this:
SELECT
  (SELECT COUNT(*) FROM tab) > 0;

-- ... is transformed into the equivalent expression:
SELECT
  EXISTS (SELECT 1 FROM tab);

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo