【发布时间】:2020-08-19 11:34:51
【问题描述】:
假设我在一个表上有多个索引
我想在执行查询时只排除其中一个
假设我的索引被命名为index_a,index_b,index_c
查询是select * from myTable where columnA='var1'
那么我怎样才能从这个查询中只排除index_b?
这里的目的是测试索引的影响。所以我将在同一个查询中运行 2 次查询。在第一个查询中,我将启用索引,而在第二个查询中,我不会启用它。所以包含的实际执行计划会告诉我它们相对于批量查询成本
我在举个例子(实际情况要复杂得多)
【问题讨论】:
-
这个请求没有意义。为什么要排除索引?
-
drop or disable it?但这似乎是一个XY problem,尤其是考虑到提供的查询。
-
这对于测试删除索引而不实际删除它的影响可能很有用。
-
扮演魔鬼的拥护者 - 为什么存在没有经过验证的目的的索引?并且删除索引是显而易见的路径(以一定的代价),因此只关注一个查询并尝试“避免”索引是非常可疑的。
-
忽略此处给出的示例查询。这里的目的是直接比较指数的影响和没有指数的影响。我添加了一张图片来更好地说明问题
标签: sql sql-server tsql indexing sql-server-2017