【发布时间】:2015-10-08 02:41:36
【问题描述】:
我知道周围有类似的问题(例如SQL Filter criteria in join criteria or where clause which is more efficient),但我记得SQL 函数很特别。也许?那么基本上哪个更正确/更高效?
SELECT *
FROM [DBOne].[dbo].[SomeData] SD
INNER JOIN [DBTwo].[DBOne].[SomeOtherData_GetALL]() SOD ON SD.[DataID] = SOD.[DataID]
或
SELECT *
FROM [DBOne].[dbo].[SomeData] SD
WHERE SD.[DataID] IN (SELECT [DataID] FROM [DBTwo].[DBOne].[SomeOtherData_GetALL]())
【问题讨论】:
-
您的 2 个查询不等价。你在比较苹果和橘子。
-
就您的特定代码示例而言 - 不,表函数没有什么特别或不同。
-
怎么样?我猜不是
Left Join,Inner Join... -
即使您从
left join更改为inner join,它们仍然可能返回不同的结果。 -
这取决于您的表结构和索引。如果索引不正确,WHERE EXISTS 将比它们中的任何一个都快,并且如果它们正确,它们的性能将相同。在我看来,它更明确。
标签: sql sql-server function