SQL Server и c # .net - разбить большую таблицу на две части и массовое копирование - PullRequest
0 голосов
/ 27 марта 2012

У меня будет таблица в 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, так как коды должны быть уникальными для обеих таблиц?

1 Ответ

3 голосов
/ 27 марта 2012

Я бы создал его в одной таблице и создал бы четко определенные индексы.

Рассмотрим индекс фильтра для столбца флага. Это делается с помощью предложения where в t-sql и страницы фильтра в ssms.

http://msdn.microsoft.com/en-us/library/cc280372.aspx

...