任何人都可以帮助我理解以下查询的SQL Server执行计划吗?
我希望子查询版本(查询2)执行得更快,因为它是基于集合的.这似乎是独立运行查询时的情况 - 稍微 - 但执行计划显示查询成本分别为15%和85%:
//-- Query 1 (15%) - Scalar Function
SELECT
gi.GalleryImageId,
gi.FbUserId,
dbo.GetGalleryImageVotesByGalleryImageId(gi.GalleryImageId) AS Votes
FROM
GalleryImage gi
//-- Query 2 (85%) - Subquery
SELECT
gi.GalleryImageId,
gi.FbUserId,
(SELECT COUNT(*) FROM GalleryImageVote WHERE GalleryImageId = gi.GalleryImageId)
FROM
GalleryImage gi
Run Code Online (Sandbox Code Playgroud)
我在这里想念的是什么; 执行计划是否会跳过功能的成本?此外,有关CTE或OVER/PARTITION查询是否更好地提供上述任何一项的任何建议?
先感谢您!