在 Azure 中的大型 table 上创建索引时超时

Timeout when create index on a large table in Azure

我 table 在 Azure 中包含超过 5000 万条记录。我正在尝试使用 follow statment

在其上创建一个非聚集索引
create nonclustered index market_index_1 on MarketData(symbol, currency) with(online=on)

但是我收到一条错误消息。

Msg -2, Level 11, State 0, Line 0 Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

如有任何建议,我们将不胜感激。

查看 Azure SQL Database Resource Limits document。然后将错误代码与本文档中列出的错误代码进行比较。

对于这种大小的数据,我认为在 table 中创建新索引的唯一方法是:

  • 创建具有相同结构且只有一个聚簇索引的新 table
  • 将原始table中的数据复制到新的
  • 截断原来的table
  • 创建所需的索引
  • 将数据复制回原始数据table

请注意,在 table 之间移动数据可能会再次超出资源限制,因此您可能必须分块执行这些操作。

其他可能的方法是将数据库服务器升级到新的 Preview Version of Azure SQL Database(注意:您以后 不能 降级服务器!)