这是一个关于SQL Server 2008 R2的问题。
我不是DBA,远非如此。我是一名Java开发人员,有时需要编写SQL(大多嵌入在代码中)。我想知道我是否做错了什么,如果是的话,我该怎么做才能避免再次发生。
Q1:
SELECT something FROM (SELECT * FROM T1 WHERE condition1) JOIN ...
Q1 包含14个连接。
Q2与Q1相同,只有一个例外。在执行(SELECT * FROM T1 WHERE condition1)之前,将其存储在临时表中。
这不是相关子查询。
Q2:
SELECT * INTO #tempTable FROM T1 WHERE condition1
SELECT something FROM #tempTable JOIN ...
再次,14个连接。
现在让我困惑的是,Q1花费了超过2分钟的时间(为了避免缓存起作用而尝试了几次),而Q2(两个查询组合起来)只花费了2秒钟!是什么原因呢?