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

更新查询缓慢

高祺
2023-03-14

从select语句更新表时遇到问题...下面是命令:

UPDATE CrashReport SET STATUS = '2' WHERE id IN (
    SELECT report_id 
    FROM CrashInfo 
    WHERE info_title LIKE 'STACK_TRACE_ID'
    AND info_value IN (
        SELECT info_value
        FROM CrashInfo
        WHERE report_id = **report_id**
        AND info_title = 'STACK_TRACE_ID'
    )
)

我要传递给此查询的参数将是sub sub查询中的report_id...select单独执行需要0.113秒,而update查询总共需要4.868秒。是因为update查询将对表的每一行执行select语句吗?我怎么能让这更快?

谢谢你

共有1个答案

葛嘉悦
2023-03-14

类似这样的事情:

SET @myVal = (
    SELECT info_value
    FROM CrashInfo
    WHERE report_id = **report_id**
    AND info_title = 'STACK_TRACE_ID');

UPDATE CrashReport SET STATUS = '2' WHERE id IN (
SELECT report_id 
FROM CrashInfo 
WHERE info_title LIKE 'STACK_TRACE_ID'
AND info_value IN (@myVal)
)
 类似资料:
  • OTA更新查询与下载 获取access_token 终端设备 终端设备直接接入OTA服务器应当使用Client Credentials模式,client_id为设备id,client_serect为设备令牌. App接入 如果终端设备无法直接接入OTA服务器,而通过App中转,那么App应当也使用Client Credentials模式,client_id为app_id,client_secret

  • 以下示例将演示如何使用Update查询,在DBUtils的帮助下更新记录。 我们将更新表中的记录。 语法 其中, updateQuery − 更新包含占位符的查询。 queryRunner − QueryRunner对象更新数据库中的员工对象。 为了理解上述与DBUtils相关的概念,我们编写一个将运行更新查询的示例。创建一个示例应用程序。 更新在DBUtils入门应用中创建的文件。 编译并运行应

  • 问题内容: 我有一个包含三列的表: 还有另一个表,其中包含2列。的列与的相同。 我需要一个查询,它将更新带有的列。 我可以通过检查ID并执行更新语句来通过循环来实现。如何才能通过查询完成? 问题答案: 怎么样

  • 问题内容: 谁能看到以下查询出了什么问题? 当我运行它时,我得到: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第8行的’a where a.CompetitionID = Competition.CompetitionID’附近使用 问题答案: 主要问题是内部查询不能与外部语句上的子句相关,因为在内部子查询执行之前,where过滤器首先应用于要

  • 问题内容: 谁能帮助我了解为什么此更新查询未更新数据库中的字段?我在我的php页面中有这个来从数据库中检索当前值: 这是我的HTML表单: 这是我的“ editblogscript”: 我不明白为什么它不起作用。 问题答案: 您必须在查询中的所有VARCHAR内容周围加上单引号。因此,您的更新查询应为: 同样,用POST中的内容直接更新数据库是一种不好的形式。您应该使用mysql_real_esc

  • 问题内容: 我的数据库中有两个表,如下表所示。在每个表DETEM_MENT_CODE的第一个ITEM表中,将有多个ITEM_CODE。 在表COMPETITOR evey ITEMCODE中将有三个条目,并且具有不同的competitor_Code 我有三个值Comp_1,comp_2,comp_3和department_code = 14; 我想做的是用comp_1,comp_2,comp_3更