当前位置: 首页 > 面试题库 >

当表列相同时,EXCEPT的执行速度是否比JOIN的执行速度快

邵博艺
2023-03-14
问题内容

为了找到两个数据库之间的所有更改,我将pk上的表联接在一起,并使用date_modified字段选择最新记录。EXCEPT由于表具有相同的架构,因此将使用提高的性能。我想用重写它EXCEPT,但是我不确定在每种情况下for的实现是否EXCEPT都可以执行JOIN。希望有人对何时使用有更多的技术说明EXCEPT


问题答案:

任何人都无法告诉您,它EXCEPT永远或永远不会超过同等产品OUTER JOIN。无论您如何编写意图,优化器都会选择合适的执行计划。

就是说,这是我的指导方针:

使用EXCEPT至少一个 下面的是真实的:

  1. 该查询更具可读性(这几乎总是正确的)。
  2. 性能得到改善。

并且以下 两个 都是正确的:

  1. 该查询会产生语义上相同的结果,您可以通过足够的回归测试(包括所有边缘情况)来证明这一点。
  2. 性能不会降低(同样,在所有边缘情况下,以及环境变化,例如清除缓冲池,更新统计信息,清除计划缓存以及重新启动服务)。

重要的是要注意,EXCEPT随着等价查询JOIN变得越来越复杂和/或您依赖部分列中的重复项而不是其他列中的重复项,编写等效查询可能是一个挑战。编写NOT EXISTS等效的文档,但其可读性要比完成时EXCEPT要琐碎得多-
通常会导致制定更好的计划(但请注意,我不会说ALWAYSNEVER,除非是按照我的方式做)。

在这篇博客中,我演示了至少一个案例,该案例EXCEPT的正确构造LEFT OUTER JOIN和等效NOT EXISTS变体的表现都优于该案例。



 类似资料:
  • 我在程序(计时器类)中使用scheduleAtFixedRate方法。它每秒钟运行一次,但有时这种方法会变得非常快(每秒执行3-4次)。 然而,我在网上做了一些研究,发现了这个: 复制自android开发者页面: 对于固定速率执行,任务每次连续运行的开始时间都是计划的,而不考虑上一次运行的时间。如果延迟阻止计时器按时启动任务,则这可能会导致一系列串接运行(一个接一个地启动)。 我需要固定的计时器。

  • 我正在尝试测试Aparapi的性能。我看到过一些博客,其中的结果显示,Aparapi确实在做数据并行操作的同时提高了性能。 但我在测试中没有看到这一点。这里是我所做的,我写了两个程序,一个使用Aparapi,另一个使用普通循环。 方案1:在Aparapi 程序2:使用循环 程序1需要大约330ms,而程序2只需要大约55ms。我是不是做错什么了?我在Aparpai程序中打印出了执行模式,它打印出的

  • 没有控制台。登录大型for循环的每次迭代(假设我 换句话说,如果没有控制台,迭代会更快吗。日志 我不是问是否会有“任何”差异,但是否有明显的差异(比如10毫秒而不是1毫秒)? 在我的例子中,我谈论的是windows命令提示符和javascript

  • 本文向大家介绍你是如何比较js函数的执行速度的?相关面试题,主要包含被问及你是如何比较js函数的执行速度的?时的应答技巧和注意事项,需要的朋友参考一下 console.time(flag); console.timeEnd(flag);

  • 问题内容: 我一直在使用HTMLUnit。非常适合我的要求。但这似乎非常缓慢。例如:我已经使用HTMLUnit自动化了以下场景 代码: 它运作良好100%。但是需要3分41秒 我想执行缓慢的原因是要验证页面上的每个元素。 我的问题是如何减少HTMLUnit的执行时间?有什么方法可以禁用网页上的验证。 提前致谢! 问题答案: 对于当前的htmlUnit 2.13,设置选项与maxmax提供的设置略有

  • 问题内容: 您如何安排Java程序的执行时间?我不确定应该使用哪个类来执行此操作。 我正在寻找类似的东西: 问题答案: