0

SELECT * from Table1 WHERE Field1 = 'abc'我已经读过在使用 WHERE 子句来限制返回的记录(即)时应该使用索引列。

使用 时是否适用此规则APPLY,如

SELECT t.Field1,x.Field2 from Table1 t OUTER APPLY (select * from Table2 x WHERE t.Field1 = x.Field1?

换句话说,在 Table2.Field1 上放置索引会加速上述查询吗?

对不起,如果答案很明显,我对 OUTER 和 CROSS APPLY 的机制没有深入的了解,只是它们可以用来代替 JOIN。

编辑基于这个线程( Hard and Fast Rules for include columns in Index ) 的一个更好的问题是,我是否应该对我从另一个表中提取的所有列使用 INCLUDE ,如果是这样,它是否更有效使用OUTER APPLY (select Field1,Field2而不是OUTER APPLY (select *

4

2 回答 2

0

好吧,每当您为列指定条件时,索引将有助于加快搜索速度。

但这是有代价的:在插入过程中,必须重新计算索引,当然您需要磁盘空间。但除此之外,索引(几乎)只有优势。

于 2015-08-17T14:20:03.197 回答
0

在 OUTER Apply 上使用的列应该被索引并且应该用于连接主查询,这将改善查询检索过程,因为它将用作聚集索引查找,它将使查询更快并且执行计划将被重用成功检索。

于 2015-08-17T14:31:21.077 回答