我正在尝试加快查询速度。其中很多都很复杂,目前我通过创建多个查询并通过连接链接它们来实现这一目标。
这是最佳做法,还是应该在SELECT
内使用SELECT
并尝试在一个查询中实现相同的功能?
任何一个选项都会对速度产生影响,还是复杂只是复杂的?
编辑:以下示例查询
SELECT HoldingCoNos.ID
FROM (
SELECT [SearchByName - No Filter].ID
FROM [SearchByName - No Filter]
INNER JOIN [SearchByName - Level 1 Subsidiaries]
ON [SearchByName - No Filter].ID = [SearchByName - Level 1 Subsidiaries].[Holding Company]
) AS HoldingCoNos
GROUP BY HoldingCoNos.ID;
这是在一个查询中使用它 - 另一个选项是将查询的FROM部分的内容创建为两个单独的查询,保存它们并使用内部联接。
答案 0 :(得分:3)
一般来说: 对父查询中的每一行执行子查询,例如
从姓名为IN的员工中选择*(从Team_project中选择Manager_name,其中project_id = 1)
它将为employees表中的每一行执行select manager_name,以比较授予查询缓存的名称,这会使其更快,但它仍然更有效。
然而,这一切都取决于更多细节,请看这个讨论: Subquery v/s inner join in sql server
答案 1 :(得分:2)
查看您的示例查询,我可以指出以下几点:
select distinct [SearchByName - No Filter].ID
。SQL:
select distinct sbnnf.ID as HoldingCoID
from [SearchByName - No Filter] as sbnnf
inner join [SearchByName - Level 1 Subsidiaries] as sbnl1s
on sbnnf.ID = sbnl1s.[Holding Company];