Для этого запроса:
SELECT pm.Program_ID, pm.[Program_Name],
isnull((select top 1 s.ReadBy
from VVF_ScriptFlow s
where s.ProgramId = pm.Program_ID -- hope I got the table alisses right
order by Id desc
), 'NA') as CurrentOwner
FROM Program_Master pm
WHERE Department_ID = @DepartmentId;
Вам нужны два индекса:
Program_Master(Department_Id, Program_ID, [Program Name]
VVF_ScriptFlow(ProgramId, id desc, ReadBy)
Я сомневаюсь, что вы получите лучшую производительность с этими индексами.
Обратите внимание, что это один из случаев, когда вы хотите использовать ISNULL()
вместо COALESCE()
. SQL Server довольно глупо относится к тому, как он относится к COALESCE()
(ну, я мог бы сказать, что он неправильный в интерпретации стандарта);с COALESCE()
он будет оценивать подзапрос дважды, когда значение не равно NULL
.