【发布时间】:2020-01-21 10:56:08
【问题描述】:
我在 SQL Server 中有一个超过 5000 万行的表,所以我的表中有一些复合索引。具有 3、4 列的索引。有一种情况,我确实需要在 FROM 子句中使用子查询。
结构示例(索引为:column2,column3,column4):
select column1
from
(select
column1, column2, column3, column4
from
myTable) as MYSUBQUERY
where
column2 = 99 and column3 = 999
order by
column4
这个例子只是为了说明FROM中的查询。我的问题是关于在 FROM 子句中的子查询结果中使用表索引以及任何性能问题。
我的问题:myTable (column2, column3, column4) 的复合索引在 FROM 子句中使用的子查询中是否有效?会像在表中直接选择常规选择一样工作而不会损失性能吗?
最好的问候, 路易斯
【问题讨论】:
-
获取执行计划看看。子查询是微不足道的,因此优化器会将其简单地折叠回主查询。事实上,使用它是没有意义的。
-
嗯,在您给出的示例中,
WHERE可以下推,但这里根本不需要派生表。我认为这里不可能有一个通用的答案。如有疑问,请根据您的实际查询检查计划。 -
在ExecutionPlan 看起来好像是同一个计划。运行一个简单的测试,性能似乎也是一样的。
-
看起来很像您的上一个问题:stackoverflow.com/questions/59829359/… - 请不要一遍又一遍地转发相同的问题
-
马克,对不起,我只做了你在上一个问题中提出的问题:“更新问题,使其只关注一个问题。这将有助于其他人回答问题。你可以编辑问题或发布新问题。由 marc_s 于 17 小时前关闭
标签: sql sql-server