Я пытаюсь эффективно просмотреть базу данных, но изо всех сил.Следующий фрагмент создается из хранимой процедуры, которая перебирает все категории и имена полей.Проблема в том, что мне нужен топ-1 на основе поиска.Другая проблема заключается в том, что теперь мне нужно расширить это, чтобы сделать несколько мест, а не только одно, что он делает из моего кода .net на данный момент, чтобы сделать его более эффективным.
Любой совет поможет,спасибо
DECLARE @ApplicationProviderId INT
SET @ApplicationProviderId = 3
DECLARE @LocationId BIGINT
SET @LocationId = 928502
DECLARE @CategoryId INT
SET @CategoryId = 502
SELECT sub.VolatileLocationContentId, sub.ContentProviderId, sub.CategoryId, sub.FieldName, sub.Value --, sub.*
FROM
(SELECT TOP 1 vlc.VolatileLocationContentId, vlc.ContentProviderId, vlc.CategoryId, vlc.FieldName, vlc.Value
FROM [VolatileLocationContent] vlc
INNER JOIN [ApplicationProviderContentProviderVolatileLocationContentField] apcpvlc
ON vlc.ContentProviderId = apcpvlc.ContentProviderId
AND vlc.FieldName = apcpvlc.FieldName
WHERE apcpvlc.ApplicationProviderId = @ApplicationProviderId
AND LocationId = @LocationId
AND vlc.FieldName = 'DescriptionStandard'
AND NOT vlc.Value IS null AND vlc.CategoryId = @CategoryId AND vlc.DeactivatedOn IS NULL
ORDER BY apcpvlc.Priority
) sub
UNION
SELECT sub.VolatileLocationContentId, sub.ContentProviderId, sub.CategoryId, sub.FieldName, sub.Value --, sub.*
FROM
(SELECT TOP 1 vlc.VolatileLocationContentId, vlc.ContentProviderId, vlc.CategoryId, vlc.FieldName, vlc.Value
FROM [VolatileLocationContent] vlc
INNER JOIN [ApplicationProviderContentProviderVolatileLocationContentField] apcpvlc
ON vlc.ContentProviderId = apcpvlc.ContentProviderId
AND vlc.FieldName = apcpvlc.FieldName
WHERE apcpvlc.ApplicationProviderId = @ApplicationProviderId
AND LocationId = @LocationId
AND vlc.FieldName = 'Image1'
AND NOT vlc.Value IS null AND vlc.CategoryId = @CategoryId AND vlc.DeactivatedOn IS NULL
ORDER BY apcpvlc.Priority
) sub