使用 Union 或 Join - 哪个更快 [关闭]

2024-06-28

我只是想知道你是否有一张桌子并且联合起来会比使用联接更有效吗?

我确实知道联接创建了更多列,但这更具理论性 - 联合是否需要像联接那样对另一个表进行嵌套循环扫描?


Union 会更快,因为它只是传递第一个 SELECT 语句,然后解析第二个 SELECT 语句并将结果添加到输出表的末尾。

连接将遍历两个表的每一行,在另一个表中查找匹配项,因此由于为每一行搜索匹配行,因此需要更多处理。

EDIT

我所说的 Union,是指 Union All,因为它似乎足以满足您想要实现的目标。尽管普通的 Union 通常比 Join 更快。

编辑2(回复@seebiscuit的评论)

我不同意他的观点。从技术上讲,无论您的联接有多好,“联接”仍然比纯串联更昂贵。我在我的博客上发表了一篇博文来证明这一点代码PERF[dot]net http://www.codeperf.net/sql-union-vs-join-performance/。实际上,它们有两个完全不同的目的,更重要的是确保您的索引正确并使用正确的工具来完成工作。

从技术上讲,我认为可以使用我的博客文章中的以下两个执行计划来总结:

UNION ALL执行计划

JOIN执行计划

实际结果

实际上,聚集索引查找的差异可以忽略不计:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Union 或 Join - 哪个更快 [关闭] 的相关文章

随机推荐

  • 对于多个人脸,CIFaceFeature TrackingID 始终相同

    我想在我的项目中检测多张面孔 因此我打算使用 CIFaceFure 的trackingID属性来跟踪面部 但我发现每次每张脸的情况都是一样的 所以我的问题是 当视频帧中存在多张脸时 如何唯一地识别一张脸 我不想识别脸部以供以后仅检测当前视频
  • 如何在 iOS 8 中强制视图控制器方向?

    在 iOS 8 之前 我们结合使用以下代码支持的接口方向 and 应该自动旋转委托方法强制应用程序定向到任何特定方向 我使用下面的代码片段以编程方式将应用程序旋转到所需的方向 首先 我正在更改状态栏方向 然后 只需呈现并立即关闭模态视图即可
  • 为什么 Python 中没有显式的空性检查(例如 `is Empty`)

    Python 之禅 https www python org dev peps pep 0020 说 显式优于隐式 然而 检查是否为空的 Pythonic 方法是使用隐式布尔值 if not some sequence some seque
  • 我可以将 GitHub 中的源文件嵌入到 Gists 之外的网页上吗?

    Context 您可以创建一个Gist https gist github com 在 GitHub 上并将其嵌入到您的网页中 嵌入要点 https help github com articles about gists embeddin
  • 为什么带有子进程的 Python 线程无法按预期工作?

    我有以下微妙的问题 Python 代码启动两个线程 每个线程创建一个对可执行文件 实际上是用 C 编写的 的子进程调用 第一个可执行文件传递参数 10000 这意味着在退出之前延迟 10 秒 第二个可执行文件类似 但延迟了 20 秒 我观察
  • CryptAcquireContext——未解析的外部

    我正在链接第三方库 Poco C 并从链接器获取以下未解决的符号错误 它似乎无法找到 CryptAcquireContextW CryptReleaseContext 和 CryptGenRandom 根据微软信息在这里 http msdn
  • BoxDecoration 小部件缺少 padding 属性

    The BoxDecoration 类文档 https api flutter dev flutter painting BoxDecoration class html表明这个小部件有一个padding财产 然而 当我将它与此属性一起使用
  • 更改复选框值而不引发事件

    我想更改复选框值而不引发 onCheck 事件 我知道有一些解决方法 例如取消注册 更改值然后重新注册 在事件方法内部基于标志跳过或评估方法语句 或任何其他解决方法 我正在寻找一种更清洁的方法 我知道这是一个旧线程 但给出的答案太麻烦了 我
  • Heroku postgresql 数据库名称

    这是我必须查找 heroku 数据库名称的命令 heroku config grep POSTGRESQL 我得到类似于以下的结果 HEROKU POSTGRESQL NAVY URL postgres wxjwilh t email pr
  • 如何覆盖 DOMParser 上的 node/xmldom errorHandler?

    I use https github com jindw xmldom https github com jindw xmldom并想要检查 XML 文件的解析错误 文档中写道 有必要在 DOMParser 的构造函数上覆盖 locator
  • 如何将 python 中的 wav 转换为 flac?

    我刚刚开始使用 Python 并且正在使用PyAudio and Wave模块从我的麦克风获取声音并将其转换为 wav file 我现在想做的就是转换它 wav to a flac 我已经看到了几种方法来做到这一点 所有这些都涉及安装转换器
  • 验证 PyPI Python 包的完整性

    最近有一些消息传出恶意库已上传到 Python Package Index PyPI 请参阅 PyPI 上的恶意库 https www bleepingcomputer com news security ten malicious lib
  • 是否可以使用字符串键/值对初始化新的 System.Collections.Generic.Dictionary ?

    是否可以创建并初始化System Collections Generic Dictionary http msdn microsoft com en us library 6918612z VS 80 aspx在一条语句中包含字符串键 值对
  • Lisp 随机化并使用两个函数从列表中拉入另一个列表

    好的 我是 lisp 的新手 我已经在这个程序上工作了几天 以了解 lisp 并研究 lisp 的某些部分 例如 cons cdr let funcall 和其他一些部分 我正在尝试创建一台随机分配颜色的糖果机 我已经多次运行这段代码 起初
  • IE 不支持 function.name。

    最近我已经成为了它的忠实粉丝function name财产 例如 我编写了一个用于扩展原型的函数 它的工作方式是 Array give function forEach 这会让你这样做 a b c forEach function 此代码在
  • Boot BroadcastReceiver 在小米设备上不起作用

    我有一个关注者BroadcastReceiver它应该在启动完成后运行 我已经在我的上测试过了小米设备 Redmi 1s 它没有运行 而在其他设备上 例如Samsung它正在按预期运行 public class DeviceBootRece
  • 如何在Jmeter中生成并发用户负载

    我有一个测试 用户将登录并在搜索字段中输入搜索关键字并获得结果 终于退出了 现在我想使用Jmeter测试并发性 这就是我想出的办法 Test plan Thread group Login request Synchronizing Con
  • MySQL 在 Windows 上将数据库文件存储在哪里以及文件的名称是什么?

    我不小心格式化了硬盘并重新安装了 Windows 却忘记备份 MySQL 服务器中的重要数据库 我现在正在尝试使用某些软件来挽救文件 但我不知道要寻找什么 文件存储的路径是什么 文件的名称是什么 我应该查找什么命名约定或文件扩展名 我相信我
  • ORA-01719: OR 或 IN 的操作数中不允许有外连接运算符 (+)

    运行查询时出现错误 ORA 01719 OR 或 IN 的操作数中不允许有外连接运算符 01719 00000 OR 或 IN 的操作数中不允许使用外连接运算符 原因 or 子句中出现外连接 动作 如果A和B是谓词 要得到 A 或B 的效果
  • 使用 Union 或 Join - 哪个更快 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是想知道你是否有一张桌子并且联合起来会比使用联接更有效吗 我确实知道联接创建了更多列 但这更具理论性 联合是否需要像联接那样对另一