我将在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,因为代码在两个表格中仍然需要是唯一的吗?
答案 0 :(得分:3)
我会在一个表中创建它并创建定义良好的索引。
考虑标志列的过滤器索引。这是通过t-sql中的where子句和ssms中的过滤器页面完成的。