我有一个将由多个客户端(本地安装)使用的数据库,然后计划将数据复制到 Azure 以允许全局报告等。
数据库将使用 GUID 作为它的主键。
我应该为表上的聚集索引使用什么,或者在将数据添加到 Azure 时这无关紧要?我真的需要聚集索引吗?Azure 将拥有数据库的单个副本,其中包含所有客户端数据(如果有影响的话)。
谢谢大家。
我有一个将由多个客户端(本地安装)使用的数据库,然后计划将数据复制到 Azure 以允许全局报告等。
数据库将使用 GUID 作为它的主键。
我应该为表上的聚集索引使用什么,或者在将数据添加到 Azure 时这无关紧要?我真的需要聚集索引吗?Azure 将拥有数据库的单个副本,其中包含所有客户端数据(如果有影响的话)。
谢谢大家。
尽管您可以在 SQL Server 中创建(并在其中包含数据)没有聚集索引的表,但在 Windows Azure SQL 数据库(WASD / SQL Azure)中是不允许的。虽然您可以在 WASD 中将没有聚集索引的表作为定义,但不允许对这样的表执行 DML 语句,即您将无法对没有聚集索引的 WASD 中的表执行 INSTERT/UPDATE/DELETE 语句。因此,如果数据有任何机会进入云,您应该有一个聚集索引。有关详细信息,请查看指南中的聚簇索引要求和 Windows Azure SQL 数据库的限制。
这里的一些建议是不正确的。
在 Azure 中,聚集索引用于其后端复制。参考:http: //blogs.msdn.com/b/sqlazure/archive/2010/05/12/10011257.aspx
我认为最好的办法是使用带有 Identity 元素的列作为聚集索引,以及 guid 列上的非聚集索引。我遇到了同样的问题,经过大量研究,这是我最终想出的解决方案。汇总起来有点麻烦,尤其是如果您已经在 Azure 上拥有生产数据,但它似乎可以解决所有问题。
我觉得使用 NEWSEQUENTIALID 是最简单的,但这不是 Azure 上的选项。