Använd:
AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400
Referens:TRUNC
Anropa en funktion på tran_date
betyder att optimeraren inte kommer att kunna använda ett index (förutsatt att det finns ett) kopplat till det. Vissa databaser, som Oracle, stöder funktionsbaserade index som gör det möjligt att utföra funktioner på data för att minimera påverkan i sådana situationer, men IME DBA:er tillåter inte dessa. Och jag håller med - de är egentligen inte nödvändiga i det här fallet.