Вы не пытайтесь решить эту задачу в лоб. Смотрите, у вас узкое место связано с последним условием. Разделите его на два условия, первое берём максимальное из значений или если значение null, то поиск по второму условию.
Тут важно понимать, что бы они не отработали у вас одновременно. Ещё один из вариантов обернуть данный запрос, если о у вас в функции, конечно.