Я не рекомендую разделять записи в отдельную таблицу - это только усложняет управление базой данных.
Когда вы проектируете базу данных, очень важным является то, что будет выполняться запросов , а не просто теоретические соображения. Я предполагаю, что вы хотите быстро получить доступ к строкам, где ProcessDateTime
равно NULL
.
Что вас беспокоит (в данном случае), так это то, что нужные вам строки будут тонко распределены по многим строкам. Это, в свою очередь, означает, что у вас есть много страниц данных в памяти, но большинство записей не будут интересны, потому что значение не NULL
.
Базы данных имеют два других варианта решения этой проблемы: кластеризованные индексы и разделы (хотя они не поддерживаются всеми базами данных). Обе эти возможности требуют дополнительных затрат при обновлении значения NULL
до значения, отличного от NULL
- в основном запись должна «переключать» разделы / местоположение страницы данных.
Тем не менее, в некоторых случаях имеет смысл иметь таблицу необработанных строк, и они затем "архивируются" после обработки. Хотя функционально то же самое, описание проблемы отличается. В этом описании основное внимание уделяется необработанным строкам; после обработки они отправляются в архив, где, по-видимому, значения не будут изменены.