我处理用于Analysis工作负载的数据库,因此我通常使用存储过程将最终数据集输出到SQL Server表中,我们可以从Tableau或SAS等连接到这些表。
我们通过同一系统处理多批数据,因此输出数据集表都包含一个BATCH_ID列,用户可以使用该列过滤他们想要分析的特定批次。
每次发布数据集时,在为该批数据插入一组新行之前,我会在输出表中删除该批处理的所有旧数据。对于这种类型的工作负载,您认为最佳索引是什么?
我目前在BATCH_ID
列上使用聚簇索引,因为我认为这会将所有行组合在一起,从而实现高效的过滤和删除/插入。随着时间的推移,这会导致很多索引或表碎片吗?请记住,每次删除并重新插入整个批次,因此对现有批次的部分更新或添加没有任何问题。
我会更好地使用标识列上的典型聚簇索引和batch_ID
上的非聚集索引吗?