C# 批量加载、索引和数据截断:如何优化?

C# 批量加载、索引和数据截断:如何优化?,c#,sql-server,C#,Sql Server,我正在批量加载文件,以便它们可以绑定到内部数据。在我加入数据之后,数据库的使用是没有意义的。我加载文件,连接数据,基本上截断文件。这是一个多租户用户的情况,因此来自一个作业的数据被截断,而另一个作业的数据保留(都放在一个表中,用一个作业id来管理谁得到了什么数据。)现在,我认为对所有这些都有帮助的第一件事是临时表,但所有这些工作都是由在管理帐户下运行的WCF服务调用的,并且(如果我错了,请帮助我)该服务一直在使用连接池,我的tempdb表在调用之间被丢弃。所有这些工作都是为了将进度返回给最终用户

我正在批量加载文件,以便它们可以绑定到内部数据。在我加入数据之后,数据库的使用是没有意义的。我加载文件,连接数据,基本上截断文件。这是一个多租户用户的情况,因此来自一个作业的数据被截断,而另一个作业的数据保留(都放在一个表中,用一个作业id来管理谁得到了什么数据。)现在,我认为对所有这些都有帮助的第一件事是临时表,但所有这些工作都是由在管理帐户下运行的WCF服务调用的,并且(如果我错了,请帮助我)该服务一直在使用连接池,我的tempdb表在调用之间被丢弃。所有这些工作都是为了将进度返回给最终用户,因此我发现很难将操作集中在一起


因此,我的问题是:是否有一种方法可以优化最终会被截断的大容量加载,以避免高索引碎片?

您可以为每个加载操作创建一个新的分区(或表)。您可以高效地删除分区或表的内容

如果可以容忍在任何时候(由于必须假定在任何时候发生的意外重启或故障转移)完全丢失数据,则可以在tempdb中将它们创建为命名表


创建分区或表当然需要DDL权限。

如果我尝试使用分区,我是否必须为每个加载的文件创建一个文件组?我将如何管理类似的内容?每个文件组可以有多个分区。一个FG可能就够了。您可以使用多个FG进一步优化碎片,但这可能是一个问题你需要的太多了。