首页 文章

聚簇索引和分布式数据库

提问于
浏览
1

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

数据库将使用GUID作为其主键 .

我应该对表上的聚簇索引使用什么,或者在向Azure添加数据时无关紧要?我真的需要聚集索引吗? Azure将拥有数据库的单一副本,如果有所不同,其中包含所有客户端数据 .

谢谢大家 .

2 回答

  • 1

    虽然您可以在SQL Server中创建(并且没有数据)没有聚簇索引的表,但在Windows Azure SQL数据库(WASD / SQL Azure)中不允许这样做 . 虽然您可以在WASD中将没有聚簇索引的表作为定义,但是不允许对这样的表执行DML语句,即,如果没有聚簇索引,您将无法对WASD中的表执行INSTERT / UPDATE / DELETE语句 . 因此,如果数据有可能进入 Cloud ,则应该有聚簇索引 . 有关详细信息,请查看Guildelines中的Clustered Index Requirement和Windows Azure SQL数据库的限制 .

  • 1

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

    SQL Azure上不允许

    • NEWSEQUENTIALID() .

    • 在SQL Azure中,绝对需要聚簇索引 . 您可以创建一个没有一个表的表,但在添加聚簇索引之前,您将无法向其添加数据 .

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

    我认为最好的办法是使用一个带有Identity元素的列作为聚簇索引,以及guid列上的非聚簇索引 . 我遇到了同样的问题,经过相当多的研究,这是我最终提出的解决方案 . 组合起来有点痛苦,特别是如果你已经在Azure上有 生产环境 数据,但它似乎是解决所有问题的数据 .

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

相关问题