Postgresql UNION 花费的时间是运行单个查询的 10 倍

2024-03-20

我试图获取 postgresql 中两个几乎相同的表之间的差异。我当前运行的查询是:

SELECT * FROM tableA EXCEPT SELECT * FROM tableB;

and

SELECT * FROM tableB EXCEPT SELECT * FROM tableA;

上述每个查询大约需要 2 分钟来运行(它是一个大表)

我想结合这两个查询以节省时间,所以我尝试:

SELECT * FROM tableA EXCEPT SELECT * FROM tableB
UNION
SELECT * FROM tableB EXCEPT SELECT * FROM tableA;

虽然它有效,但运行需要 20 分钟!我猜想最多需要 4 分钟,即单独运行每个查询的时间。

UNION 是否做了一些额外的工作导致需要这么长时间?或者有什么方法可以加快速度(有或没有联盟)?

更新:使用 UNION ALL 运行查询需要 15 分钟,几乎是单独运行每个查询的 4 倍,我是否正确地说 UNION (all) 根本不会加快速度?


关于你的“额外工作”问题。是的。 Union 不仅合并两个查询,而且还遍历并删除重复项。这与使用 unique 语句相同。

因此,特别是与您的 except 语句“union all”结合使用可能会更快。

在这里阅读更多内容:http://www.postgresql.org/files/documentation/books/aw_pgsql/node80.html http://www.postgresql.org/files/documentation/books/aw_pgsql/node80.html

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

Postgresql UNION 花费的时间是运行单个查询的 10 倍 的相关文章

  • 使用 FileTable 通过 SQL INSERT 创建子目录

    之前 我请求如何在一个目录中创建一个目录FileTable不使用文件 I O API https stackoverflow com q 10483906 175679 我现在想为刚刚创建的父目录创建一个子目录 在插入期间如何分配我的父母
  • 如何获得组中“中间”值的平均值?

    我有一个包含值和组 ID 的表 简化示例 我需要获取中间 3 个值的每组的平均值 因此 如果有 1 2 或 3 个值 则它只是平均值 但如果有 4 个值 它将排除最高值 5 个值将排除最高值和最低值 等等 我正在考虑某种窗口函数 但我不确定
  • 如何选择列值不不同的每一行

    我需要运行一个 select 语句 返回列值不不同的所有行 例如 EmailAddress 例如 如果表格如下所示 CustomerName EmailAddress Aaron email protected cdn cgi l emai
  • 我们可以使用sql列出MS Access数据库中的所有表吗?

    我们可以使用 sql 找到 ms access 中的所有表吗 就像我们在 sql server 中所做的那样 select from sys tables 在sqlite中 SELECT FROM sqlite master where t
  • 将数据表传递到存储过程。有没有更好的办法?

    数据表可以以某种方式传递到 SQL Server 2005 或 2008 中吗 我知道标准方法似乎是将 XML 传递给 SP 并且可以通过某种方式轻松地将数据表转换为 XML 来实现这一点 将 NET 对象传递到 SP 怎么样 那可能吗 我
  • 续集打字稿多对多关系模型数据

    我正在使用sequelize续集打字稿 https github com RobinBuschmann sequelize typescript图书馆 并试图实现以下关系 Team ts Scopes withPlayers include
  • 如何删除MySQL中的所有事件

    如果我想删除某个事件 我需要查询类似的内容 DROP EVENT IF EXISTS eventname 但我找不到一次性删除所有事件的命令 必须一项一项地删除 有没有一次性删除所有事件的SQL DROP EVENT IF EXISTS S
  • PostgreSQL WHERE 计数条件

    我在 PostgreSQL 中有以下查询 SELECT COUNT a log id AS overall count FROM Log as a License as b WHERE a license id 7 AND a licens
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • 如何在 Visual Studio 2013 中使用 Git 的外部 diff 工具?

    我找到了这个帖子 http architects dzone com articles how configure diff and merge这解释了如何让 Visual Studio 2013 在比较 Git 中的文件时使用内置 dif
  • 如何重置 SQL Server 中表的 IDENTITY 列? [复制]

    这个问题在这里已经有答案了 我怎样才能重置我的IDENTITY我已经填充的表中的列 我尝试过类似的方法 但它不起作用 WITH TBL AS SELECT ROW NUMBER OVER ORDER BY profile id AS RN
  • parent_id 是外键(自引用)并且为 null?

    浏览 Bill Karwin 的书 SQL Antipatterns 第 3 章 Naive Trees 邻接表 父子关系 有一个注释表的示例 CREATE TABLE Comments comment id SERIAL PRIMARY
  • 如何应用 .diff 文件

    我有一个 diff 类型文件 看起来像爆炸了 diff git a res User lua b res User lua index db8c2cc 4d2af0f 100644 a res User lua b res User lua
  • Postgres LEFT JOIN 与 WHERE 条件

    我需要使用 where 条件左连接两个表 Table time table id rid start date end date 1 2 2017 07 01 00 00 00 2018 11 01 00 00 00 2 5 2017 01
  • 查询以查找平均加权价格

    我在 Oracle 中有一个表 每个给定部分包含多行 每行都有一个与其关联的数量和价格 还有一个给定零件的行集相加的总数量 以下是数据示例 我需要的是获得该零件的平均加权价格 例如 如果数量为 100 的零件的价格为 1 数量为 50 的零
  • 用户表到用户和用户首选项。这是正常化了吗?

    我有一张桌子叫Users其偏好列表不断增加 这些首选项可以包括 ReligionId 它将连接到另一个包含宗教列表的表 偏好列表正在不断增加 我想把它分开Users表分成2个表 我认为行之有效的策略是制作一个单独的表 名为UserPrefe
  • 有没有任何工具可以查看针对数据库运行的查询?

    是否有任何工具可以检查 asp net 或 sql server 并报告针对数据库运行的所有查询 我问这个问题的原因是我正在一个项目中使用 Linq 并且想要仔细检查它对每个页面实际执行的操作 理想情况下 我想在浏览器中查看页面并获得为创建
  • 使用 impala 按范围连接表的有效方法

    我第一个有下表 Range 包括值范围和附加列 row From To Country 1 1200 1500 2 2200 2700 3 1700 1900 4 2100 2150 The From and Toare bigint并且是
  • T-SQL参数嗅探重新编译计划

    我有 SQL 命令 exec sp executesql N SELECT TOP 10 FROM mytableView WHERE Name LIKE Value0 ORDER BY Id DESC N Value0 varchar 5

随机推荐

  • jQuery URL 分割和抓取

    所以我有一个 URL 并且我知道如何从 URL 获取 GET 但我的 URL 是http www example com edit 2695 有没有办法抓取网址并在之后吐出部分 我想要编辑和 ID 您可以使用此代码 var url http
  • Django 时间问题

    我在 django 中的应用程序需要告诉用户操作发生的时间 除了询问用户他 她所在的时区之外 我是否可以在客户端生成时间 在我的脑海中 是否有一个与时区无关的时间的特定表示 unix时间 然后我可以简单地将其粘贴到html中并让客户端 浏览
  • 如何为该月中的几天提供后缀?

    我需要一个函数在显示 等文本时返回几天的后缀th in Wednesday June 5th 2008 它只需要处理数字 1 到 31 不需要错误检查 和英语 这是一个也适用于更大数字的替代方案 static const char dayS
  • R - 从 URL/HTML 对象/HTML 响应写入 HTML 文件

    我想使用 R 中的 URL 保存 HTML 文件 我尝试在使用后保存响应对象GET and read html的功能httr and rvest分别打包到网站的 URL 上 我想保存 的 HTML 但这并不能保存网站的实际内容 url ht
  • 带有 async/await 的 try/catch 块

    我正在深入研究节点 7async await功能并不断绊倒这样的代码 function getQuote let quote Lorem ipsum dolor sit amet consectetur adipiscing elit la
  • 是否有获取最新 Microsoft Edge 版本号的链接?

    我正在寻找一个链接来获取 Microsoft Edge 的最新驱动程序版本号 类似于 Google Chrome 的链接 https chromedriver storage googleapis com LATEST RELEASE ht
  • Swift 3:在 collectionView 中缓存图像

    我目前正在开发我的应用程序 将其更新为与 Swift 3 兼容 但还剩下一个问题 以前 我的图像缓存工作得很好 但自从更新后UIImageView获取图像时不会填充 s 这是代码 在 cellForItemAt 功能 if let img
  • 资源未发现异常?

    我从 android 市场收到崩溃报告 android content res Resources NotFoundException Resource ID 0x 我每周收到大约 17 个这样的东西 它指出我的代码中的以下内容 conte
  • 如何将 JDK GregorianCalendar 对象日期与 Joda 一起使用

    我正在尝试使用 Joda 库 因为使用 Java 本机方法计算周期是一件令人头疼的事情 而且我所有的尝试都给出了不精确的结果 我看过这个样本 int n Days daysBetween start toLocalDate end toLo
  • 如何使用外部vue npm组件

    我是 Vue js 的新手 目前正在尝试在现有解决方案中使用它 我不可能使用 vue 文件 它是一个独立的系统 不使用 webpack 我需要本地文件才能使其正常工作 在下面的例子中 我在线使用了 js 我想使用这个日期选择器 https
  • 在 RAFT 中,是否有可能对某个日志条目达成多数共识,但该条目尚未提交?

    考虑一下官方的这个模拟筏网页 https raft github io Why is term 2 index 1尽管没有承诺S2 leader S3 and S4同意日志吗 我运行了几分钟以确保所有通信均已完成 奇怪的是 如果我再添加一个
  • 内容安全策略:“img-src'self'数据:”

    我有一个应用程序 用户可以在其中复制图像 URL 将其粘贴到输入中 然后图像将加载到框中 但我的应用程序不断触发此消息 拒绝加载图像 LOREM IPSUM URL 因为它违反了以下内容安全策略指令 img src self data 这是
  • Autohotkey 错误的击键发送到控制台

    我正在尝试理解这个错误并寻找解决方法 使用这个脚本 NoEnv SingleInstance force SendMode Input Alt t to send keystrokes t Send It send the correct
  • 张量流将预测作为 b64 输出顶部结果

    我有一个 Keras 模型 我将其转换为张量流服务模型 我可以成功地将预训练的 keras 模型转换为采用 b64 输入 预处理该输入并将其提供给我的模型 我的问题是我不知道如何获取我得到的预测数据 这是巨大的 并且只导出最高结果 我正在进
  • 如何设置 Eclipse/RCP 装饰器的颜色?

    我在 Eclipse RCP 应用程序中向我的树查看器项目添加了一个装饰器插件 xml
  • 如何从 bash 脚本发送 control+c?

    我在 bash 脚本中启动多个屏幕 然后运行 djangorunserver命令他们每个人 我也希望能够以编程方式阻止它们 这需要我发送Control c to runserver 如何从 bash 脚本发送这些击键 Ctrl C send
  • 在 Intellij 内的项目之间共享数据库

    我使用 Intellij 来检查数据库 运行 sql 查看表中的数据等 这一切都工作正常 但我唯一缺少的是能够一次定义这些数据源并在我的所有项目中查看它们 即我可以在其他项目之间共享它们项目 而不必为新项目重新定义它们 这在 Intelli
  • 任何嵌入式文档查看器

    我希望在我的 CakePHP 应用程序中包含一个文档查看器 用于上传文档 我想要一个支持 Microsoft Word DOC 和 DOCX Microsoft PowerPoint PPT 和 PPTX 和 Adob e 便携式文档格式
  • 如何使用 lambda 获取哈希映射中值的键数

    我有一个哈希图 Map
  • Postgresql UNION 花费的时间是运行单个查询的 10 倍

    我试图获取 postgresql 中两个几乎相同的表之间的差异 我当前运行的查询是 SELECT FROM tableA EXCEPT SELECT FROM tableB and SELECT FROM tableB EXCEPT SEL