sql >> Database >  >> RDS >> Sqlserver

Beste index(en) om te gebruiken voor een OR-instructie in SQL Server

Een Index kan niet op zo'n OK worden gebruikt. probeer dit:

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

hebben een index op Due_Amount en een andere op Bounced_Due_Amount.

Het is misschien beter om uw tafel opnieuw te ontwerpen. Zonder uw bedrijfslogica of tabel te kennen, ga ik ervan uit dat u een kolom "Bounced" Y/N of 1/0 char/bit en alleen een kolom "Due_Amount" zou kunnen hebben. Voeg een index toe aan dat "Due_Amount" en de vraag zou zijn:

SELECT * FROM table WHERE Due_Amount > 0

je kunt nog steeds onderscheid maken tussen een Bounced of niet-rij. Dit werkt niet als u zowel een teruggestuurd als een niet-teruggestuurd verschuldigd bedrag tegelijk moet hebben.



  1. Verschillende meldingen selecteren en een duidelijker meldingsbericht voorbereiden

  2. het lezen van utf-8-inhoud van de mysql-tabel

  3. Hoe het record te krijgen als Count nul is in Laravel

  4. Een veel-op-veel-relatie converteren naar een-op-veel in PostgreSQL