Обновить строки, затем вставить новые связанные строки или реструктурировать данные? - PullRequest
0 голосов
/ 01 июня 2011

Давайте установим сцену, PHP & MYSQL:

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

Единственными реальными обязательными полями для этого вопроса являются (основные) step_id , ** task_id **, step .

Когда автор обновляет свои указания, он может обновлять каждый шаг, добавлять новые, удалять старые.

Я понимаю, как обрабатывать структуру обновления / вставки / удаления логики INSERT ... ON DUPLICATE KEY ... и т. Д.

Моя забота лежит в другом месте.Скажем, кто-то пишет указания для задачи № 1, через пять месяцев они обновляют задачу № 1 с помощью нескольких новых шагов.За это время появилось 1000 новых задач.

Действительно ли проблема в том, что большинство шагов для задачи № 1 будут расположены, скажем ... step_id 1-10, и этот новый шаг будетвниз в 10001?

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

1 Ответ

0 голосов
/ 01 июня 2011

Я считаю, что task_id является весьма важным полем и для этого вопроса.Если он проиндексирован, у вас не будет проблем с производительностью при выборе шагов для данной задачи, независимо от того, насколько они разделены в вашей таблице.

С сериализованными шагами у вас будет больше проблем, поскольку вам придется десериализовать их для каждого обновления / удаления, снова сериализовать и затем обновить строку, также вы можете столкнуться с проблемами с размером столбца, если вы не ограничите количество шаговза каждое задание.

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