我使用了内置的性能调优工具并为我的数据库构建了索引。从那时起,我将一些查询从“select top 10 ...”更改为“select top 50”。
我的问题是我需要重建我的SQL服务器数据库索引吗?
答案 0 :(得分:3)
如果你所有的变化都是排名前50的前十名,你就不需要重建你的索引。关于执行计划的查询完全相同(因此将受益于现有的索引),唯一的区别是你是从结果集中检索一些额外的行。
如果您注意到在此更改后性能大幅下降,则问题必定在其他地方。例如,我发现在按照与索引的自然顺序不同的顺序添加数据之后,出于性能原因需要重建聚簇索引。但这是因为新数据,而不是前10名变为前50名。
编辑:Sam Saffron评论说执行计划可以在前10个和前50个查询之间进行更改,以确保不会检查两个执行计划并查看它们是否有所不同。
答案 1 :(得分:0)
虽然您不需要仅因为查询模式发生更改而重建索引,但您可能需要重新考虑索引。
例如,假设您在特定列上有一个包含非聚集索引的表。每当您需要使用不在非聚集索引中的数据提取行时,SQL必须转到基础表以提取数据。
当您拉动1行时,通常最便宜的是转到非聚集索引然后点击主表,但是在某些时候如果您要拉大量行,那么扫描整个表可能会变得更便宜。
底线如果查询模式发生了变化,您可能需要查看索引,可能一个对top 10
查询有效的索引,不再选择top 50
查询。