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

为什么我的更新查询花了这么长时间,而我的选择查询却不花这么长时间?

芮明知
2023-03-14

我正在尝试执行以下操作:假设我有以下SELECT查询(请原谅德文列名):

SELECT a1.aktivitäts_id, a1.herkunft_kontakt, a1.aktionsart, a1.aktionstyp, a2.aktivitäts_id, a2.herkunft_kontakt, a2.aktionsart, a2.aktionstyp, a2.datum
FROM Aktivitäten a1, Aktivitäten a2 WHERE a1.kunden_nr_aktivität = a2.kunden_nr_aktivität
AND a1.aktionsart = 'foo' AND a2.herkunft_kontakt <> ''

这个查询大约需要4秒(数据库总共有大约100万条记录),返回大约400条记录。但是,当我想用以下语句更新这些相同的记录时

UPDATE Aktivitäten a1, Aktivitäten a2 SET a1.herkunft_kontakt = a2.herkunft_kontakt 
WHERE a1.kunden_nr_aktivität = a2.kunden_nr_aktivität
AND a1.aktionsart = 'foo' AND a2.herkunft_kontakt <> ''

查询总是在取“永远”后超时。是我做错了什么,还是这种行为是意料之中的?

共有1个答案

燕星鹏
2023-03-14

首先,学习join!!!其次,不同之处在于您可能更新了太多的行--而且可能一行更新了多次。我可能建议在加入之前尝试聚合:

UPDATE Aktivitäten a1 JOIN
       (SELECT kunden_nr_aktivität, MAX(herkunft_kontakt) as herkunft_kontakt
        FROM Aktivitäten a2
        WHERE a2.herkunft_kontakt <> ''
        GROUP BY kunden_nr_aktivität
       ) a2
       USING (kunden_nr_aktivität)
     SET a1.herkunft_kontakt = a2.herkunft_kontakt 
WHERE a1.aktionsart = 'foo' ; 
 类似资料:
  • 下面的代码片段摘自我的global.class.php文件。当搜索“类型”等于“postcode”或“part-number”时,执行SQL查询所需的时间是我当前遇到的问题。请参阅下面的代码片段以获得包括处理时间在内的解释。 请参阅以下执行时间: Page time是调用findOrder(“type”,“query”)所用的时间; SQL time是直接在phpMyAdmin内重复查询所用的时间

  • 我的Gradle构建需要1分钟到2分钟,我不确定发生了什么。在事件日志中,我大部分时间都只看到一个条目 执行任务:[:app:GenerateDebugSources,:app:PrepareDebugunitTestDependencies,:app:MockableAndroidJar,:app:AssembleDebug] 我不知道这个任务在做什么,我检查了设置,希望这能有所改变,但我运气不

  • 问题内容: SQL: 用户索引: 个人资料索引 解释 : 上面的查询大约需要0.1221 我怎样才能使其运行更快? 问题答案: 我删除了此查询,因此搜索完成后不会显示总结果数。 似乎是临时解决方案,甚至是永久解决方案。

  • 问题内容: 我想保存一个或数组。 我尝试与和一起使用,发现前者总是花费更少的时间。 我的实际数据要大得多,但在这里我仅展示一小段用于演示目的: 输出: 我的实际大小(字典中约有100,000个键)时差更加明显。 为什么在保存和加载时,泡菜比np.save花费的时间更长? 我什么时候应该使用? 问题答案: 因为只要书面对象不包含Python数据, numpy对象在内存中的表示方式比Python对象简

  • 我有一个web应用程序,在Tomcat上部署该应用程序通常需要大量的时间。我怀疑某个地方的数据库连接正在等待超时,但这只是一种猜测,我想确定是什么导致了中断,这样我就可以解决这个问题。谁能给我提个建议吗?我是不是应该在Tomcat加载战争时对它进行侧写并在那里寻找线索呢?如果是的话,有没有适合初学者的教程? 如果这很重要,我的web应用程序使用spring和Hibernate。我的一个同事告诉我,

  • 我正在使用PARSE API发出GET请求。我收到一个“414请求URI太大”错误,但我不明白为什么。这是我请求的代码: