SQL Server和c#.net - 将大表拆分为两个并进行批量复制

.net c# sqlbulkcopy sql-server-2008

我将在SQL Server 2008中有一个表,它将保存数百万行,初始设计将是:

Code nvarchar(50) PK
Available bit
validUntil DateTime
ImportID int

用户可以一次导入100,000个奇数代码,我将使用sqlbulkcopy插入数据。他们还可以为特定的ImportID一次请求最多10,000个代码的批次,并且只要请求日期小于ValidUntil日期并且代码可用。

我的问题是,最好将所有这些代码保存在一个表中并使用索引或将一个表拆分为两个 - AvailableCodes和UsedCodes - 因此每当请求代码时,它们都会从AvailableCodes表移动到UsedCodes表中而不是有可用标志?这样,AvailableCodes表不会像单个表一样大,因为随着时间的推移会有比使用可用代码更多的使用代码,我不会因为审计目的而接受它们。

此外,如果表被拆分,我仍然可以使用sqlbulkcopy,因为代码仍然需要在两个表中都是唯一的?

一般承认的答案

我会在一个表中创建它并创建定义良好的索引。

考虑标志列的过滤器索引。这是通过t-sql中的where子句和ssms中的过滤器页面完成的。

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




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因