I have the below query that it works fine but it takes time. And the table is being bigger and bigger so it takes more and more time. Is there any way to make this query faster? The query is here:
SELECT patient.bartar_id, patient.bartar_enteringthesystem, patient.bartar_proviencename, patient.bartar_cityname, patient.bartar_coloplastrepname, patient.bartar_consultorname,
patient.bartar_provienceofsurgeryname, patient.bartar_cityofsurgeryname, patient.bartar_surgeryhospitalname, patient.bartar_doctorsname, patient.bartar_patientstatusname, patient.bartar_ostomytypename,
patient.bartar_insurancetypename, patient.bartar_ostomytimename, patient.bartar_dateofseurgery, patient.bartar_deathhealeddate, patient.bartar_customercode, patient.bartar_name, patient.bartar_family,
patient.bartar_age, patient.bartar_birthyear, patient.bartar_connectornursename, patient.bartar_hastakmiliname, patient.bartar_doctorsname AS Expr1, patient.bartar_patientstatusname AS Expr2,
patient.bartar_generalstatusname, patient.new_description AS CCDesc, patient.bartar_visitname, patient.bartar_repvisitname, patient.bartar_salename, patient.bartar_customersstatusname, r.bartar_date,
r.bartar_delay, r.bartar_nextcall, r.new_newcaller, r.bartar_bagPerMonth, r.bartar_brand, r.bartar_paste, r.bartar_bag, r.bartar_acc, r.bartar_insuranceinfo, r.bartar_pastePerMonth
FROM Filteredbartar_newpaitient AS patient INNER JOIN
and the rest is here:
(SELECT DISTINCT bartar_patientname,
(SELECT TOP (1) bartar_date
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_date IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_date,
(SELECT TOP (1) bartar_delay
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_delay IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_delay,
(SELECT TOP (1) bartar_nextcall
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_nextcall IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_nextcall,
(SELECT TOP (1) new_newcaller
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (new_newcaller IS NOT NULL)
ORDER BY bartar_date DESC) AS new_newcaller,
(SELECT TOP (1) bartar_brandname
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_brand IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_brand,
(SELECT TOP (1) bartar_pastename
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_paste IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_paste,
(SELECT TOP (1) bartar_bagname
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_bag IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_bag,
(SELECT TOP (1) bartar_accname
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_acc IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_acc,
(SELECT TOP (1) bartar_pastepermonth
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_pastepermonth IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_pastePerMonth,
(SELECT TOP (1) bartar_bagepermonth
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_bagepermonth IS NOT NULL)
ORDER BY bartar_date DESC) AS bartar_bagPerMonth,
(SELECT TOP (1) bartar_insuranceinfoname
FROM Filteredbartar_callcenterreport AS c2
WHERE (bartar_patientname = cte.bartar_patientname) AND (bartar_insuranceinfo IS NOT NULL)ORDER BY bartar_date DESC) AS bartar_insuranceinfo
FROM Filteredbartar_callcenterreport AS cte) AS r ON r.bartar_patientname = patient.bartar_newpaitientid
--where patient.bartar_enteringthesystem > @Fromdate and patient.bartar_enteringthesystem < @Todate
ORDER BY patient.bartar_enteringthesystem ASC
Get rid of all the top 1 sub
just join or left join
min(bartar_date)...
from
group by bartar_patientname
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.