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

时间:2019-04-15 17:53:31

标签: c# sql sql-server azure-functions

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

是否可以开始创建索引并使其运行直到完成,而不会占用其余的功能。

换句话说,功能能否在后台完成并建立索引?

谢谢

1 个答案:

答案 0 :(得分:1)

不首先创建索引的原因是它减慢了写入速度,但这在100%的时间内都是不正确的。如果按与索引相同的顺序插入数据,则首先创建索引可能不是一件坏事,因为索引在您进行过程中不必进行太多调整。您需要测试每种情况,以查看哪种是适合您特定情况的最佳选择。

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

某些过程将需要存活下来以完成索引,但是它不一定必须是该函数。插入完成后,您可以让函数调用另一个过程来创建索引。为此,有很多选项,包括另一个功能,一个逻辑应用程序(通过调用存储的proc)或SQL Job代理(如果您可以使用的话)。