我创建了一个在 SQL Server 2008 上运行的 SQL 查询。由于某种原因,它需要很长时间并且超时不完整。
这是我为测试目的而修改的查询。列FileData
是 a varbinary(max)
,主键是ContentFileId
。如您所见,我只是想选择一个特定的记录。
SELECT *,
CASE
WHEN [CMS_tbContentFile].[FileData] IS NULL
THEN (
SELECT [CMS_tbContentFile2].[FileData]
FROM [CMS_tbContentFile] AS [CMS_tbContentFile2]
WHERE [CMS_tbContentFile2].[ContentFileId] = 2152
)
ELSE [CMS_tbContentFile].[FileData]
END AS [Test]
FROM [CMS_tbContentFile]
WHERE [CMS_tbContentFile].[ContentFileId] = 3054
子查询CASE (SELECT [CMS_tbContentFile2].[FileData] FROM [CMS_tbContentFile] AS [CMS_tbContentFile2] WHERE [CMS_tbContentFile2].[ContentFileId] = 2152)
本身运行良好,如果我删除主查询的那部分,主查询运行良好。只有 theCASE
和子查询的组合会导致问题。
希望通过查看上述内容,有人会看到问题,可能这种类型的查询存在一些问题,而在 T-SQL 中是不可能的?