sql - sql server中的子查询与内部联接

标签 sql performance query-optimization sql-server-2012

我有以下疑问

第一个使用内连接

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 始终会根据执行计划对其进行转换。如果它足够“智能”以从两个查询生成相同的计划,您将得到相同的结果。

Herehere一些帮助链接。

关于sql - sql server中的子查询与内部联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14052596/

相关文章:

c# - SQL Server 2008——并行执行查询

performance - 我如何从预取内在函数中获得可衡量的好处?

c# - 超时过期,优化查询

.net - Linq 到 NHibernate : Distinct

SQL 索引 - 这是重叠的吗?

sql - Postgres 中数字数据类型的精度和小数位数是什么?

c# - 如何最有效地测试两个数组是否包含 C# 中的等效项

sql - 优化 SQL 查询以避免哈希匹配(聚合)

MySQL 合并索引优化不起作用

postgresql - 与 PostgreSQL CTE 的一般并行性