C# 如何在不等待完成的情况下创建数据库索引

C# 如何在不等待完成的情况下创建数据库索引,c#,sql,sql-server,azure-functions,C#,Sql,Sql Server,Azure Functions,我使用Azure函数每月向SQL Server数据库插入一次大量数据,但同时我想在其中一个表上创建索引 是否可以启动创建索引并让它运行直到完成,而不占用函数的其余部分 换言之,功能能否在后台完成和索引进行构建 谢谢,不首先创建索引的原因是它会减慢写入速度,但这不是100%的情况。如果以与索引相同的顺序插入数据,那么首先创建索引可能不是一件坏事,因为索引不需要在执行过程中进行太多调整。您需要测试每个场景,看看哪一个是适合您特定情况的最佳选择 正如jdweng提到的,在创建数据的同时创建索引并不能解

我使用Azure函数每月向SQL Server数据库插入一次大量数据,但同时我想在其中一个表上创建索引

是否可以启动创建索引并让它运行直到完成,而不占用函数的其余部分

换言之,功能能否在后台完成和索引进行构建


谢谢,不首先创建索引的原因是它会减慢写入速度,但这不是100%的情况。如果以与索引相同的顺序插入数据,那么首先创建索引可能不是一件坏事,因为索引不需要在执行过程中进行太多调整。您需要测试每个场景,看看哪一个是适合您特定情况的最佳选择

正如jdweng提到的,在创建数据的同时创建索引并不能解决首先创建索引的问题,因为它引入了竞争锁,如果索引首先完成,则需要更新每一行,就像您首先创建索引一样


某些进程需要保持活动状态才能完成索引,但它不必是该函数。插入完成后,可以让函数调用另一个创建索引的过程。这方面有很多选项,包括另一个函数、一个逻辑应用程序(通过调用存储过程)或SQL作业代理(如果您可用)。

不,这实际上是不可能的。索引
CREATE
需要在会话中运行。没有办法将其转移到系统任务。启动它的连接需要一直打开,直到它完成为止,这样Azure函数就不能退出,因为这将终止connection@Larnu-离线/在线不同步/异步感谢您的回复-那么,在一个包含一百万行的表上创建索引的最佳做法是什么?我在插入数据是个坏主意,但这是我能看到的唯一方法。索引一百万行不会花费太多时间。让系统自动完成。SSMS是多线程的,因此只要插入和创建索引不访问相同的数据,就可以并行执行这两个操作。如果这两个操作正在访问相同的数据,则索引在完成时不会包含所有条目。