这是从我的存储过程嵌套选择还是连接?
SELECT NULL AS StoryID
, AlbumID
, CAST(NULL as varchar) AS StoryTitle
, AlbumName
, (SELECT URL FROM AlbumPictures AS AlbumPictures_3 WHERE (AlbumID = Albums.AlbumID) AND (AlbumCover = 'True')) AS AlbumCover
, Votes
, CAST(NULL as Int) AS PictureId
, 'albums' AS tableName
, (SELECT NestedAlbums.AlbumID FROM NestedAlbums WHERE (AlbumID = Albums.AlbumID)) AS Flag
INTO #Results2
FROM Albums WHERE AlbumID IN (SELECT StringVal FROM funcListToTableInt(@whereAlbumID))
片段我在我的查询中使用的上述嵌套选择。我很想知道Nested Selects
是否优于LEFT/Right JOINS
或者我应该使用JOINS
?
表相册:
表NestedAlbums:
更好?为了什么?可读性?性能?还有别的吗? – Oded
无论如何,查询计划器可能会将您的嵌套选择重写为连接。使用SQL服务器,通过使用客户端来查看查询计划应该很容易。 – Pointy
@Oded表演。 – user1593175