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