给定一个应用程序,其中大多数表的主键是uuid,这些表上的聚簇索引的最佳选择是什么?
考虑以下数据类型:
int
或bigint
。简单 - 可以自动递增(好/坏)但看起来如此随意且实用性有限。感觉最像是黑客。datetime
- 增加效用 - 可以是createdOnServer
列。但是会导致一些欺骗,因此需要使用独特的东西(这个问题有多大,我不知道)datetime2
- 比datetime
更宽,但更高的精度和更少的愚蠢。寻找评论最佳,需要考虑的事项或其他想法。
答案 0 :(得分:1)
我不知道为什么你会解雇自动递增int。任何广泛使用的东西,效果都很好,只要你不打算将表(通过联盟)与其他版本的表合并,你为什么不想使用它?它将为平衡的B树提供非常好的键(不太宽),聚集索引在幕后。请记住,在具有聚簇索引的表中,所有其他索引都将使用聚簇索引列来到达所需的页面和行,以便您希望尽可能小。
答案 1 :(得分:0)
如果您不想创建索引,可以考虑升级/移动到V12 Azure SQL数据库。这些不需要聚集索引。
在索引本身上:您应该在查询的列上创建它。例如,如果您在UUIDs +日期上进行查找,则应在二者上创建索引以支持您的查询。