Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11
SQL: COUNT(*) 而不是 EXISTS()
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
你会去超市数清所有的苹果,仅仅是为了看看他们是否有苹果吗?你不会。同样地,你不应该运行一个 COUNT(*)
查询来检查值是否大于 0
。使用 EXISTS 谓词来代替。
我们的模式转换功能可以自动检测你的错误查询,例如 COUNT(*) > 0 风格的查询或者 COUNT(expr) > 0 风格的查询。
我们已经写过关于这个问题的博客,并对差异进行了基准测试。它确实会产生影响!
所以,不要这样做
if (create.fetchValue(selectCount().from(AUTHOR)) > 0) { // ... }
但是应该这样做
if (create.fetchValue(exists(selectOne().from(AUTHOR)))) { // ... }
当然,完全可以将这个 EXISTS
谓词嵌入到更复杂的查询中,并可能避免不必要的二次往返...
反馈
您对此页面有任何反馈吗? 我们很乐意倾听!