当前位置: 首页 > 知识库问答 >
问题:

基于另一个表更新一个表时的性能问题

宗政和韵
2023-03-14

给定:

表A~400k行表B~150k行

两个表都有相同的GUID,但我需要在A中标记B中所有缺少的GUID,这两个GUID都有索引

查询:

update table_a
         left join table_b b on table_a.guid = b.guid
set missing = true
where b.guid is null;

这个查询可以工作,但在我的机器上花了4、5个小时。有什么方法可以让这个查询运行得更快吗?

共有2个答案

长孙兴德
2023-03-14

尝试:

update table_a
set missing = true
where guid not in (select guid from table_b)
鲁财
2023-03-14

它快多了。它只测试行是否为西行。

UPDATE table_a ta
SET missing = true
WHERE NOT EXISTS ( SELECT 1 from table_b tb WHERE ta.guid = tb.guid );
 类似资料:
  • 问题内容: 我有两个桌子, 这是我的第一张桌子, 这是我的第二张桌子 我需要一些如何使用第一个表中的数据更新第二个表中的所有行的信息。 它需要在一个更新查询中完成所有这些操作。 SUBST_ID和SERIAL_ID都匹配,它需要从第一个表中获取created_id并将其插入第二个表中。 因此,第二张表将变为以下内容, 感谢您的帮助和指导。 问题答案:

  • 问题内容: 我正在尝试根据另一个MySQL信息更新一个MySQL表。 我的桌子看起来像: 而表如下所示: 我想更新在与来自基于(存储在字符串字段)。 希望更新后的表如下所示: 我有一个有效的查询,但是非常慢: 这使我的CPU耗尽,最终导致超时,并且仅执行了一部分更新(有数千个要匹配的值)。我知道匹配的速度会很慢,但这是我必须将它们匹配在一起的唯一数据。 有没有更好的方法来更新这样的值?如果可以更快

  • 我已经创建了一个多边形表(多边形),其中包含名称和点(使用多边形值) 我有另一个表(latlon ),它有lat和lot列,包含超过一百万条记录 我必须在“多边形”表中的点的帮助下更新纬度表中的列(区域名称) 以下 select 语句为一条记录提供正确的输出。 有人能帮我在POSTGIS中编写一个UPDATE查询来获取更多的lat,lon值吗?

  • 问题内容: 我有一条语句需要写(用通用名称表示,因为这是为了工作)来更新表“ tUpd”中的列“ updCol”。tUpd还具有一个列“ linkCol”,该列存在于另一个表tOther中。tOther还有另一列“ idCol”。 我的问题是更新tUpd中行的updCol值,该值通过linkCol对应于具有给定idCol值的行。 我认为应该起作用的一种解决方案是: 但是,我担心这种方法会导致性能下

  • 问题内容: 我试图用另一个表中找到的值更新一个表中的所有记录。 我尝试了相同基本查询的许多版本,并且始终收到相同的错误消息: 操作必须使用可更新的查询。 关于为什么此查询在Access DB中不起作用的任何想法? 也尝试了此操作,因为我意识到第二张表的每个型号都有多个型号记录-我只需要为每个型号找到第一条记录中的第一条说明。 …虽然仍然出现相同的错误。 问题答案: 您必须使用联接

  • 问题内容: 我有两张桌子。 表1 包含的公司的地理位置在经纬度坐标中以lat / lng坐标进行地理定位 表2 还包含 表1 中未地理参考的相同公司,以及数百个地址已地理参考的其他公司。 我需要做的就是将 Table1* 公司的lat / lng值插入 表2中 的相应条目中。这些插入可以基于的共同点是该列。 *** 我敢肯定,这是一个简单的问题,但是我很少使用SQL。 问题答案: 假设 插入“ t