2

我有一个将由多个客户端(本地安装)使用的数据库,然后计划将数据复制到 Azure 以允许全局报告等。

数据库将使用 GUID 作为它的主键。

我应该为表上的聚集索引使用什么,或者在将数据添加到 Azure 时这无关紧要?我真的需要聚集索引吗?Azure 将拥有数据库的单个副本,其中包含所有客户端数据(如果有影响的话)。

谢谢大家。

4

2 回答 2

1

尽管您可以在 SQL Server 中创建(并在其中包含数据)没有聚集索引的表,但在 Windows Azure SQL 数据库(WASD / SQL Azure)中是不允许的。虽然您可以在 WASD 中将没有聚集索引的表作为定义,但不允许对这样的表执行 DML 语句,即您将无法对没有聚集索引的 WASD 中的表执行 INSTERT/UPDATE/DELETE 语句。因此,如果数据有任何机会进入云,您应该有一个聚集索引。有关详细信息,请查看指南中的聚簇索引要求和 Windows Azure SQL 数据库的限制。

于 2012-09-19T09:02:42.400 回答
1

这里的一些建议是不正确的。

  1. SQL Azure 上不允许使用 NEWSEQUENTIALID()。
  2. 在 SQL Azure 中,绝对需要聚集索引。您可以创建没有表的表,但在添加聚集索引之前,您将无法向其中添加数据。

在 Azure 中,聚集索引用于其后端复制。参考:http: //blogs.msdn.com/b/sqlazure/archive/2010/05/12/10011257.aspx

我认为最好的办法是使用带有 Identity 元素的列作为聚集索引,以及 guid 列上的非聚集索引。我遇到了同样的问题,经过大量研究,这是我最终想出的解决方案。汇总起来有点麻烦,尤其是如果您已经在 Azure 上拥有生产数据,但它似乎可以解决所有问题。

我觉得使用 NEWSEQUENTIALID 是最简单的,但这不是 Azure 上的选项。

于 2012-10-05T02:29:48.637 回答