我使用了内置的性能调优工具并为我的数据库建立了索引。自那以后,我将一些查询从“select top 10...”更改为“select top 50”。
我的问题是,我需要重新构建SQL服务器数据库索引吗?
我使用了内置的性能调优工具并为我的数据库建立了索引。自那以后,我将一些查询从“select top 10...”更改为“select top 50”。
我的问题是,我需要重新构建SQL服务器数据库索引吗?
select *
时,通过索引然后进行书签查找可能会变得过于昂贵。一旦达到某个特定的阈值,表扫描可能更加廉价,我曾经见过这种情况,该阈值相当低 - 低于您所预期的。 - Sam Saffron虽然查询模式发生变化时不需要重建索引,但您可能需要重新考虑索引。
例如,假设您有一个在特定列上的非聚集索引的表。每当您需要提取不在非聚集索引中的数据行时,SQL 将不得不访问底层表以提取数据。
当您提取 1 行时,通常最便宜的方法是先访问非聚集索引,然后再访问主表;但是,如果您提取了大量行,则扫描整个表可能会更便宜。
底线 如果查询模式发生变化,您可能需要检查您的索引,有可能对于一个 前 10 名
查询效果很好的索引,在 前 50 名
查询中将不再被选中。