У меня довольно простой запрос, выполнение которого занимает вечность - примерно секунда на возвращаемую строку. Проблема заключается в подходе ранжирования по разделам, но я не уверен, как его переписать (перекрестное применение?)
Любые указатели приветствуются.
Запрос:
Select orders.orderid
,prescriptions.patientid as Rx_PtID
,prescriptions.prescriptiontypeid
,prescriptions.prescriptionid
,letter_history.employeename
,RANK() OVER (PARTITION BY prescriptions.prescriptionid ORDER BY letter_history.letter_date ASC) AS orank --Assigns ID based on first printing
from letter_history,orders,prescriptions
where letter_history.description LIKE CONCAT('%', orders.orderid, '%')
AND prescriptions.patientid = orders.patientid
AND orders.ordertypeid = 999 --Exam Orders Only
AND CONVERT(varchar(10),orders.orderdate, 120) = CONVERT(varchar(10),prescriptions.rxdate, 120)
AND CAST(orders.ordereddate as date) >= @DateFrom
AND CAST(orders.ordereddate as date) <= @DateTo