堆大表与性能问题SQL Server

时间:2017-11-03 18:06:24

标签: sql sql-server performance heap

我有一个商业案例,我需要存储车辆车间发票的所有详细信息(发票号,经销商,车辆号,和平,服务性质......)。我有超过50列在同一查询中被选中。

在我的治疗中,我需要做一些特定的治疗,以获得清洁的数据和一些基本的转变。我面临的问题是我没有业务密钥可以创建主键,因为我的研讨会数据的每一行代表发票详细信息(如件修复),有时我有相同的重复行因为在研讨会上有不止一次的操作。

所以我发现自己有一个没有任何聚簇索引的Heap表。所以我尝试创建一些非聚集索引来提高性能,但它并没有真正起作用,每次加载更多数据时,select查询需要的次数比之前多。

我检查了执行计划,我观察到我的问题的主要原因是RID查找(堆),其成本超过85%

所以我不是真正的专家,我需要一些帮助^^,我知道stackoverflow是获得它的最佳地点:)。我已经有了创建一个定义发票的复合索引的想法,但它在我的数据集中不是唯一的?你怎么看 ?

我会感激地回答任何合理的答案/建议。

非常感谢!

1 个答案:

答案 0 :(得分:0)

聚簇索引不需要是唯一的(如果它们不是,SQL会添加一个内部'unique-ifier',因此行可以相互区分),所以继续创建一个!