我有以下疑问
第一个使用内连接
SELECT item_ID,item_Code,item_Name
FROM [Pharmacy].[tblitemHdr] I
INNER JOIN EMR.tblFavourites F ON I.item_ID=F.itemID
WHERE F.doctorID = @doctorId AND F.favType = 'I'
第二个使用子查询,如
SELECT item_ID,item_Code,item_Name from [Pharmacy].[tblitemHdr]
WHERE item_ID IN
(SELECT itemID FROM EMR.tblFavourites
WHERE doctorID = @doctorId AND favType = 'I'
)
在这个项目表
[Pharmacy].[tblitemHdr]
包含 15 列和 2000 条记录。和 [Pharmacy].[tblitemHdr]
包含 5 列和大约 100 条记录。在这种情况下 which query gives me better performance?
最佳答案
通常连接会比内部查询更快,但实际上它取决于 SQL Server 生成的执行计划。无论您如何编写查询,SQL Server 始终会根据执行计划对其进行转换。如果它足够“智能”以从两个查询生成相同的计划,您将得到相同的结果。
Here和 here一些帮助链接。
关于sql - sql server中的子查询与内部联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14052596/