sql >> Databasteknik >  >> RDS >> Sqlserver

Bästa index att använda för ett OR-uttalande i SQL Server

Ett index kan inte användas på en sådan OR. prova detta:

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

har ett index på Due_Amount och ett annat på Bounced_Due_Amount.

Det kan vara bättre att designa om ditt bord. Utan att känna till din affärslogik eller tabell kommer jag att gissa att du kan ha en "Bounced" Y/N eller 1/0 char/bit-kolumn och bara en "Due_Amount"-kolumn. Lägg till ett index på det "Due_Amount" och frågan blir bara:

SELECT * FROM table WHERE Due_Amount > 0

du kan fortfarande skilja på en rad som studsar eller inte. Detta kommer inte att fungera om du behöver ha både ett studsat och ett icke-studsat förfallobelopp samtidigt.



  1. Visual Studio 2015 SQL Server-dataverktyg saknar alternativet Lägg till tabell

  2. Det går inte att infoga ett enda kolumnvärde i python med MySQL

  3. Skapa MySQL-databas med python

  4. Hur ändrar jag standardinställningarna för en mysql-tabellkolumn?