为什么这个触发器使更新变得如此之慢?

时间:2011-11-24 11:36:02

标签: mysql triggers

当我在启用触发器的情况下从表中更新100条记录时,需要15秒才能执行,但是当我在没有触发器的情况下运行它时它只需要2秒。

这是在本地开发版本上,在制作上需要两分钟。有什么办法可以加快速度吗?

感谢。

  DROP TRIGGER IF EXISTS imuebles_update;
  DELIMITER |
  CREATE TRIGGER imuebles_update AFTER UPDATE ON imuebles
  FOR EACH ROW
  BEGIN

    IF NEW.pub_id IS NULL THEN
      DELETE FROM search_engine WHERE id = NEW.idImuebles;
    ELSE
      REPLACE INTO search_engine SELECT * FROM search_engine_v WHERE id = NEW.idImuebles;
    END IF;

  END;
  |

  DELIMITER ;

1 个答案:

答案 0 :(得分:2)

对我来说看起来像,

REPLACE INTO search_engine SELECT * FROM search_engine_v WHERE id = NEW.idImuebles;
在更新后,

在每一行上运行可能是一件非常重要的事情。

我的猜测是需要仔细研究为什么需要这样做而不是简单的修复。

如果发布一些数据库结构信息,也许有人可以建议如何解决它。