Użyj:
AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400
Numer referencyjny:TRUNC
Wywołanie funkcji w dniu tran_date
oznacza, że optymalizator nie będzie mógł użyć indeksu (zakładając, że taki istnieje) skojarzonego z nim. Niektóre bazy danych, takie jak Oracle, obsługują indeksy oparte na funkcjach, które umożliwiają wykonywanie funkcji na danych w celu zminimalizowania wpływu w takich sytuacjach, ale administratorzy IME DBA na to nie pozwalają. I zgadzam się – w tym przypadku nie są one naprawdę potrzebne.