У меня есть представление LoanDocDtl
, которое сделано из сводной таблицы и вызывает проблемы с производительностью.Всякий раз, когда я запрашиваю это представление, мне требуется много времени, чтобы получить результат.
Я пытался преобразовать его в таблицу, но он все еще медленный.
create view dbo.LoanDocDtl
as
select
LoanId,
DocUnknownCreateDtTm = [0],
DocUnknownExistBit = convert(bit, case when [0] is not null then 1 else 0 end),
DocCertificateCreateDtTm = [1],
DocCertificateExistBit = convert(bit, case when [1] is not null then 1 else 0 end),
DocDownloadCreateDtTm = [2],
DocDownloadExistBit = convert(bit, case when [2] is not null then 1 else 0 end),
DocVerificationCreateDtTm = [225],
DocVerificationExistBit = convert(bit, case when [225] is not null then 1 else 0 end)
from (
select
LoanId,
DocTypeId,
CreateDtTm
from LoanDoc --table
where DocTypeId <> 0) a
pivot (max(a.CreateDtTm)
for DocTypeId
in ([0],
[1],
[2],
[225])) as pvt;
go
Есть 0 -255 различных DocTypeId
, я добавил только несколько в приведенном выше коде, чтобы минимизировать представление.Таблица LoanDoc
имеет тонны LoanId
, и к каждому LoanId
прикреплено несколько DocTypeId
, поэтому она очень медленная.
Есть ли способ оптимизировать это, сделав эту таблицу илизаполнить это представление с помощью временных таблиц или добавить все в хранимую процедуру и заполнить это представление?