Вот моя ситуация. У меня есть ряд претензий на человека. Иногда мы получаем дубликаты претензий, которым присваивается код ошибки DUP и которые отклоняются с нулевой суммой в долларах. То, что я пытаюсь сделать, - это просмотреть исходные претензии и сумму счета. Если дубликат и первоначальная претензия представляют собой одни и те же единицы и сумму счета, я намерен их игнорировать (или, по крайней мере, пометить как НЕ потенциальный повторный счет). Если единицы и / или сумма выставления счета отличаются, то это требование будет помечено как потенциальный повторный счет.
У меня есть функция, которая правильно находит значение первичного ключа исходного требования, и базовый запрос выполняется менее чем за секунду. Однако, когда я пытаюсь связать этот набор данных с таблицами, это приводит к тому, что мое время выполнения становится бесполезным. Чего я не понимаю, так это почему одна функция работает так быстро, но попытка связать ее так сильно утомляет, мы говорим о наборе данных 140i sh заявок за год деятельности.
Если бы кто-то мог предложить какое-то понимание или иметь лучший способ выполнить sh, я был бы обязан.
SELECT pre.*
--, st.unitsofservice as OrigUnits
--I only include the line above if the link to the servicetransaction table on the last line of the query is active
FROM
(
SELECT Sub.*--,
,dbo.cf_DuplicateServiceSTID(sub.servicetransactionid) as PaidSvc
--the line above is the function returning the primary key value for the original claim
FROM
(
SELECT Pre.servicetransactionID,
st.servicedate, st.individualid, st.agencyid, st.servicecode, st.placeofserviceid, st.unitsofservice,
dbo.sortmodifiers(st.modifiercodeid, st.modifiercodeid2, st.modifiercodeid3, st.modifiercodeid4) as Modifiers,
bd.billedamount,
a.upi,
b.name
FROM (select pmt.servicetransactionid
from pmtadjdetail pmt
where substring(pmt.reasoncodes,1,5) = 'DUP') Pre
JOIN servicetransaction st on pre.servicetransactionid = st.servicetransactionid
join billdetail bd on st.servicetransactionid = bd.servicetransactionid
join agency a on st.agencyid = a.agencyid
join business b on a.businessid = b.businessid
where st.servicedate between @StartDate and @EndDate
and st.agencyid = iif(@AgencyID is null, st.agencyid, @AgencyID)
) Sub
join individual i on sub.individualid = i.individualid
join enrollment e on sub.individualid = e.individualid
WHERE e.enrollmenttype <> 'p'
) Pre
--join servicetransaction st on pre.paidsvc = st.servicetransactionid
--If I remove the comment from the line above my run time increases to the point of uselessness