Лучший способ обновить запись X при вставке Y - PullRequest
1 голос
/ 06 апреля 2010

У меня есть огромная таблица, которая в основном используется для резервного копирования и административных целей. Единственная важная запись - это последняя вставленная запись.

При каждом попадании в порядок по времени слишком медленно. Я хочу сохранить отдельную таблицу с последним вставленным идентификатором.

В PHP я теперь вставляю, получаю последний вставленный идентификатор и обновляю другую таблицу.

Есть ли более эффективный способ сделать это.

Ответы [ 3 ]

4 голосов
/ 06 апреля 2010

Вы можете сделать это на конце базы данных, используя триггер .

1 голос
/ 07 апреля 2010

(Извините, что опубликовал это как отдельный ответ, было слишком долго для комментария к ответу Матти.)

Существует небольшое снижение производительности, связанное с триггерами, но, если я правильно помню, это незначительно для нормального использования (в зависимости от того, что вы делаете с ним, конечно). В основном это будет проблемой, только если вы выполняете массовую загрузку (в этом случае вы обычно удаляете / отключаете триггеры на время выполнения задачи). Мне кажется, что накладные расходы здесь будут очень минимальными, поскольку вы действительно выполняете только один INSERT / UPDATE для X в дополнение к INSERT для Y.

По сути, триггер будет масштабироваться намного лучше по сравнению с вашим текущим методом, потому что вместо того, чтобы выполнять поиск для поиска последней обновленной записи, вы можете просто выполнить операцию вставки, а затем непосредственно вставить первичный ключ новой записи в таблица «Последнее обновление».

0 голосов
/ 06 апреля 2010

Почему бы вам не добавить индекс в это поле?

Быстрый поиск и сортировка - это именно то, для чего нужен индекс.

Обновление вашего собственного «псевдоиндекса» в таблице равносильно переизобретению колеса.

Кроме того, добавление триггера в БД всегда кажется мне очень сомнительным (как в неочевидном)!

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