База данных: активные и неактивные данные в одинаковых или отдельных таблицах - PullRequest
1 голос
/ 16 декабря 2011

Я столкнулся со сценарием наличия одной таблицы для всех моих данных или создайте таблицу для моих активных данных и, закончив с данными, переместите ее в архивную таблицу.

Данные для хранения - это информация о задании, где может быть около 100 активных заданий. Весь этот список и вся информация часто собираются и отображаются на экране. Он также часто меняется по мере выполнения работ.

Однако, как только работа завершена, ее не нужно менять, а нужно только искать выполненные работы. В реальном выражении было бы всего несколько записей (около 2000 в год).

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

Ответы [ 2 ]

0 голосов
/ 17 декабря 2011

Как правило, объем, который вы описываете, не должен быть решающим для вашего дизайна.Даже если ваша таблица заданий спроектирована так, что одна запись занимает 1 КБ, таблица будет расти с 2 МБ / год.Потребовалось бы несколько лет, чтобы эта таблица выросла до уровня, который значительно снизил бы общую производительность сервера.

Вместо этого, как говорит Стюарт в своем ответе, вы должны посмотреть на работу по поддержаниюисторическая таблица: вам нужно будет синхронизировать две таблицы с точки зрения дизайна, чтобы любые изменения в вашей текущей таблице не нарушали историческую таблицу.Вам нужно будет написать сценарий для перемещения данных - и если вы когда-нибудь захотите посмотреть как текущие, так и исторические данные, вам придется написать запросы, объединяющие две таблицы.

В качестве альтернативы, вы можете добавитьбит / бул столбец «Активен», и включайте и выключайте этот бит в зависимости от статуса сотрудника.Или, если вы хотите создать более продвинутое решение, добавьте даты начала и окончания и создайте подробную историю таким образом.

0 голосов
/ 16 декабря 2011

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

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