我正在构建一个数据库来编译来自40个不同服务器的数据。这些服务器都具有相同的设计,但使用的是专用于单个位置的平台(因此每个位置不需要识别ID)。我为每个位置创建了已编译数据的密钥,但由于这几乎所有表都有复合主键,其设计如下:
LocationID, TransactionID, CustomerID, ServiceID, TransDate, Amount
和
LocationID, CustomerID, FirstName, LastName, Balance
列。
我的问题是,关于我的非聚集索引。如果我计划在LocationID
表上的CustomerID
上创建索引,即使Transaction
位于群集中,也最好包含LocationID
列表的关键已经?
希望有意义,提前谢谢!
答案 0 :(得分:0)
群集实际上是关于如何在完成所有操作后检索数据。如果您要根据CustomerID
和LocationID
检索数据,那么您可能希望将这些数据包含在某种索引中。但问题是你必须1)加载你的数据,这可能最终重新平衡你的聚集索引(即,如果你在加载LocationID
2之前加载LocationID
2 1),然后2)定义您的查询以在所有内容中包含LocationID
。
我的直觉是,在保留您已有的相同数据结构的同时重新键入所有内容更加清晰,而不是尝试将LocationID
合并到每个表和每个查询连接中。是否更容易......好吧,我认为简单地重新键入传输中的数据可能更容易,而不是改变整个架构。简单地添加LocationID
可能似乎,但我怀疑它会咬你,特别是在外部联接查询和&比简单的equijoins更微妙的东西。