У меня будет таблица в SQL Server 2008, которая будет содержать миллионы строк, и первоначальный дизайн будет:
Code nvarchar(50) PK
Available bit
validUntil DateTime
ImportID int
Пользователи могут импортировать 100 000 нечетных кодов за раз, и я буду использовать sqlbulkcopy для вставки данных. Они также могут запрашивать пакеты кодов до 10000 за раз для определенного ImportID, если дата запроса меньше даты ValidUntil и код доступен.
Мой вопрос заключается в том, будет ли лучше хранить все эти коды в одной таблице и использовать индексы или разбивать одну таблицу на две - AvailableCodes и UsedCodes - поэтому всякий раз, когда запрашиваются коды, они перемещаются из таблицы AvailableCodes в таблица UsedCodes вместо наличия флага «Доступно»? Таким образом, таблица AvailableCodes не станет такой же большой, как отдельная таблица, поскольку со временем будет больше используемых кодов, чем доступных кодов, и я не буду беспокоиться о том, что они будут приняты для целей аудита.
Кроме того, если таблицы будут разделены, смогу ли я использовать sqlbulkcopy, так как коды должны быть уникальными для обеих таблиц?