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

SQL JOIN vs IN性能?

弘兴言
2023-03-14
问题内容

在某些情况下,使用JOIN或IN将为我提供正确的结果…哪一种通常具有更好的性能,为什么?它在多大程度上取决于您正在运行的数据库服务器?(仅供参考,我正在使用MSSQL)


问题答案:

一般来说,INJOIN是可以产生不同结果的不同查询。

SELECT  a.*
FROM    a
JOIN    b
ON      a.col = b.col

与…不同

SELECT  a.*
FROM    a
WHERE   col IN
        (
        SELECT  col
        FROM    b
        )

,除非b.col是唯一的。

但是,这是第一个查询的同义词:

SELECT  a.*
FROM    a
JOIN    (
        SELECT  DISTINCT col
        FROM    b
        )
ON      b.col = a.col

如果联接列被UNIQUE标记为,则这两个查询将在中产生相同的计划SQL Server

如果不是,则INJOINon快DISTINCT

有关性能的详细信息,请参见我的博客中的这篇文章:

  • IN vs. JOINvs.EXISTS


 类似资料:
  • 概览 首先我们了解一下 YODAOS 的运行时:YODAOS 基于 ShadowNode 它采用事件驱动、非阻塞I/O模型;在设计之初,ShadowNode 的接口与 Node.js 兼容,因此在大部分场景下,开发者可以像 Node.js 一样使用 ShadowNode,了解这些有利于开发者更快速的进行 YODAOS 上的应用开发。 YODAOS 开发应用时,需要关注应用的性能与稳定性,包括但不限

  • 问题内容: 每次执行此查询需要200毫秒以上的时间: 但这每次在第一次查询后每次执行只需要2-3毫秒: 注意在两个查询中相同的ID值。看起来第二个查询使用第一个查询的缓存结果。但是,为什么第一个查询不能使用缓存的结果本身?从第一个查询中删除不会更改任何内容。 当我使用其他ID执行第二个查询时,第一次执行该查询大约需要40毫秒,此后每次需要2-3毫秒。因此,第二个查询不仅运行速度更快,而且还缓存结果

  • 目录 考虑到性能和架构, Redux “可扩展性” 如何? 每个 action 都调用 “所有的 reducer” 会不会很慢? 在 reducer 中必须对 state 进行深拷贝吗?拷贝 state 不会很慢吗? 怎样减少 store 更新事件的数量? 仅有 “一个 state 树” 会引发内存问题吗?分发多个 action 会占用内存空间吗? 缓存远端数据会造成内存问题吗? 性能 考虑到性能

  • Sketch 的性能可以轻松的支持相当复杂的设计,但如果你创作出了一个很大的文件,你可能会想知道有哪些因素影响着 sketch 的性能。 模糊 模糊是非常消耗系统资源的效果。Sketch 需要先将图层渲染成一个位图(这已经很消耗资源了),然后再在上面添加一个模糊(这将更消耗资源),模糊半径越大,消耗的资源也就越大。 一个半径为 1px的模糊,Sketch 需要检查每一个像素周围的每一个像素,也就是

  • 用户希望他们使用的图形界面具有交互性和流畅性,而这正是你需要越来越多地集中时间和精力的地方。 界面不仅要加载快,还要运行良好, 滚动应该很快,动画和交互应该如丝般流畅。 要编写高性能应用程序,你需要了解 LCUI 如何渲染界面,并确保你编写的代码以及第三方代码尽可能高效地运行。 像素管道 “渲染”就是将组件数据转变为像素数据,这个转变如同一条包含很多区域的单向管道,组件数据经过管道中的每个区域的处

  • 性能工具 Reporting: WEIGHTOF.IT Web Page Test GTmetrix Speed Curve [$] Chrome Devtools Timeline sitespeed.io JS tools: ImageOptim-CLI imagemin Budgeting: performancebudget.io

  • jd.onMemoryWarning(function callback) 监听内存不足告警事件,当 iOS/Android 向小程序进程发出内存警告时,触发该事件。 参数 function callback 内存不足告警事件的回调函数 参数 属性 类型 说明 level number 内存告警等级,只有 Android 才有,对应系统宏定义 level 的合法值 值 说明 5 TRIM_MEMO