Ein Index kann auf einem solchen OR nicht verwendet werden. versuchen Sie Folgendes:
SELECT * FROM table WHERE Due_Amount > 0
UNION ALL
SELECT * FROM table Bounced_Due_Amount > 0
--use "UNION" if Due_Amount and Bounced_Due_Amount could both >0 at any one time
haben einen Index auf Due_Amount und einen anderen auf Bounced_Due_Amount.
Es könnte besser sein, Ihren Tisch neu zu gestalten. Ohne Ihre Geschäftslogik oder Tabelle zu kennen, gehe ich davon aus, dass Sie eine "Bounced" Y/N- oder 1/0-Zeichen/Bit-Spalte und nur eine "Due_Amount"-Spalte haben könnten. Fügen Sie einen Index für diesen "Due_Amount" hinzu und die Abfrage wäre einfach:
SELECT * FROM table WHERE Due_Amount > 0
Sie können immer noch zwischen einer gesprungenen oder einer nicht gesprungenen Zeile unterscheiden. Dies funktioniert nicht, wenn Sie gleichzeitig einen zurückgebuchten und einen nicht zurückgebuchten fälligen Betrag benötigen.