Я создал запрос SQL, который выполняется на SQL Server 2008. По какой-то причине он занимает много времени и время ожидания не завершено.
Это мой запрос, измененный для целей тестирования.Столбец FileData
представляет собой 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)
работает нормально, и если я удаляю эту часть основного запроса, основной запросработает нормально.Проблема заключается только в комбинации CASE
и подзапроса.
Надеемся, что, взглянув на вышеупомянутое, кто-то увидит проблему, возможно, некоторую проблему с запросом такого типа, которая невозможна в T-SQL