Sql 顺序唯一聚集索引

Sql 顺序唯一聚集索引,sql,sql-server,indexing,Sql,Sql Server,Indexing,我有一个表,大约有2000万行,每天插入大约500万行。目前没有定义PK/聚集索引。我想验证我的想法是否正确。PK将由Dateloaded和Acctnumber两列组成。Acctnumber对于每一天都是唯一的,Dateloaded对于每一行都是重复的。我认为从读取的角度来看,索引顺序Acctnumber,Dateloaded最有意义,但从加载的角度来看,情况正好相反,Dateloaded,Acctnumber 数据通常与Acctnumber上的联接以及where子句中Dateloaded或us

我有一个表,大约有2000万行,每天插入大约500万行。目前没有定义PK/聚集索引。我想验证我的想法是否正确。PK将由Dateloaded和Acctnumber两列组成。Acctnumber对于每一天都是唯一的,Dateloaded对于每一行都是重复的。我认为从读取的角度来看,索引顺序Acctnumber,Dateloaded最有意义,但从加载的角度来看,情况正好相反,Dateloaded,Acctnumber

数据通常与Acctnumber上的联接以及where子句中Dateloaded或using Dateloaded上的联接一起使用。由于最近数据加载似乎更为重要,Dateloaded、Acctnumber是最好的吗


其他信息当前有一个关于Acctnumber的索引和一个关于Loaddate的索引,Acctnumber(非聚集)和一个用于Acctnumber的索引被使用了100倍以上。

这两列的数据类型是什么?总是会遗漏一些内容。不幸的是,在这种情况下,他们都是Varchar(20)。已经试图说服他们将dateloaded切换到DATE,但他们说没有骰子。而且没有更合适的单列(如
ID
)可以充当主聚集键?集群密钥应该是窄的、唯一的、稳定的和不断增加的-
INT IDENTITY
是完美的
VARCHAR
不好有两个原因-太大(2 x 22字节)和可变长度。。。。。。这不会给你一个在所有方面都表现良好的集群密钥。我要求一个唯一的键,但他们说不,因为这两列构成一个唯一的键。他们不允许我更改数据类型,因为有太多的代码是使用当前的。Dateloaded每天都会增加,Acctnumber也会增加,至少对于新帐户是这样。他们的逻辑是可怕的。。。。。。您可以尝试使用这两列创建聚集索引,但这远远不够理想。。。。。