我正致力于提高应用程序的数据库性能,现在它涉及聚集索引的一部分。我没有经验,所以我想问一下。
我的申请会发出警告
在我的应用程序中,我有显示的概念。
这意味着用户可以创建/打开一个节目,然后它只能访问与该节目相关的对象(演员,衣服,物品等)。 因此,使用“ ... WHERE ShowId = X ”进行查询真的很普通
此外,由于集成,我们确实有很多插入(我们每天都会运行一个可以在数据库中获得+/- 30k新行的作业,所有这些都在同一个Show中)并且删除不是那么常见...用户可以删除一个节目(实际上花了很长时间)。
应用程序的用法通常如下:
问题
基于此,我认为每个表的最佳聚簇键都在[ShowId,id]上。但是,阅读this文档,我怀疑如果这不会使插入的数量变得更糟,或者是因为插入是在同一个ShowId上制作的,那就没问题
我无法访问PRD数据库,也无法访问PRD数据库的副本进行测试。我使用dev数据库进行了测试,但它很小,似乎根本没有任何影响。
有人可以帮忙吗?
答案 0 :(得分:0)
如果没有更多信息,很难给出答案。您也应该考虑发布表格结构。
对于您添加的每个索引,您都会在插入时产生开销。但是如果你需要使用“WHERE SHOWID = ...”,那么在这种情况下你会对你的SELECT产生强烈的积极影响(在一个大表上,并考虑SHOWID非常有选择性,即对很多记录的一些记录)整个表)。
你说:
“我无法访问PRD数据库,也无法访问它的副本 测试。我使用dev数据库进行了测试,但它没有那么小 似乎有任何影响。“
但是您可以使用执行计划来查看查询将如何使用您的索引/表。此外,您可以非常轻松地生成多个随机记录以进行测试。