Mysql 既然我只更新表而不是插入新行,有没有办法优化这个查询?

Mysql 既然我只更新表而不是插入新行,有没有办法优化这个查询?,mysql,Mysql,new_表的结构是它永远不会插入新行,而只会更新现有行 目前我正在使用以下查询。是否有任何方法可以优化它(在性能方面)以实现更快的行更新 INSERT INTO new_table (hash, pages, visits, last_visit) SELECT A.hash, COUNT(B.id), A.visits, MAX(B.timestamp) FROM audience A JOIN behaviour B ON B.hash = A.hash GROUP BY

new_表的结构是它永远不会插入新行,而只会更新现有行

目前我正在使用以下查询。是否有任何方法可以优化它(在性能方面)以实现更快的行更新

INSERT INTO new_table (hash, pages, visits, last_visit)
   SELECT A.hash, COUNT(B.id), A.visits, MAX(B.timestamp)
      FROM audience A
JOIN behaviour B ON B.hash = A.hash
GROUP BY A.hash
   ON DUPLICATE KEY UPDATE
      new_table.pages=VALUES(pages), 
      new_table.visits=VALUES(visits), 
      new_table.last_visit=VALUES(last_visit)

使用
UPDATE
而不是
INSERT

UPDATE new_table n
JOIN audience AS a on a.hash = n.hash
JOIN (
    SELECT hash, COUNT(*) AS pages, MAX(timestamp) AS last_visit
    FROM behaviour
    GROUP BY hash) AS b ON b.hash = n.hash
SET n.pages = b.pages, n.visits = a.visits, n.last_visit = b.last_visits

你能给我们展示一下SELECT部分的输出吗,比如:EXPLAIN SELECT A.hash,COUNT(B.id),A.visions,MAX(B.timestamp)从观众A中加入行为B ON B.hash=A.hash组BY A.hash您是否尝试过更新…加入?是否所有讨厌猫的人都希望其他人免费完成所有工作@BerndBuffen我已用图片更新了我的问题。感谢you@shmosel使用Update,我知道如何再次分配像
column=$variable
hi这样的值,谢谢大家。我对它进行了测试,它似乎有效。老实说,与我所拥有的相比,它的执行速度快了25秒。39对14。所以它对性能有着巨大的影响!一个理解这个理论的问题:在我的例子中,它首先尝试插入,然后更新,然后你删除了“插入”部分,对吗?没错。这只是更新,它不会浪费时间尝试插入,然后故障切换到更新代码。再次感谢您。你真的帮了大忙。向上投票+接受。