Below is the simple query
SELECT ROW_NUMBER() OVER(PARTITION BY FKOrderKey ORDER BY PKOrderHistoryKey DESC) AS RowNumber, FkOrderKey, OH.FKOrderStatusKey,RO.CreatedBy,RO.RelativeEligibilityKey,
RO.IsProcessed,RO.FKOrderSourceKey,RO.CreatedDate,RO.ProcessedDate,RO.FKCenterKey, RO.PayerKey,RO.PKOrderKey, RO.FKOrderTypeKey
FROM OrderHistory OH
INNER JOIN ReferralOrder RO ON RO.PKOrderKey = OH.FKOrderKey --AND RO.CreatedDate >= ISNULL(@OrderDateFrom, RO.CreatedDate) AND RO.CreatedDate <= ISNULL(@OrderDateTo, RO.CreatedDate)
WHERE FKOrderKey IS NOT NULL AND OH.FKOrderStatusKey NOT IN (114, 115)
AND RO.FKOrderTypeKey = 278
This query is taking 23 sec to run. In Referralorder table we have around 0.8 million record and Order history table has 2.2 million record. Query is running slow when large volume of data return.