Почему этот триггер делает обновления такими медленными? - PullRequest
1 голос
/ 24 ноября 2011

когда я обновляю 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 Ответ

2 голосов
/ 24 ноября 2011

Ну, мне кажется,

REPLACE INTO search_engine SELECT * FROM search_engine_v WHERE id = NEW.idImuebles;

- потенциально довольно тяжелая вещь для запуска в каждой строке после обновления.

Я предполагаю, что для того, чтобы решить эту проблему, нужно хорошо понять, а не просто исправить это.

Если вы публикуете некоторую информацию о структуре базы данных, возможно, кто-то может подсказать, как ее исправить..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...