Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Melhor(es) índice(s) para usar para uma instrução OR no SQL Server


Um índice não pode ser usado em um OR assim. tente isso:
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

tem um índice em Due_Amount e outro em Bounced_Due_Amount.

Talvez seja melhor redesenhar sua tabela. Sem conhecer sua lógica ou tabela de negócios, suponho que você poderia ter uma coluna S/N ou 1/0 char/bit "Bounced" e apenas uma coluna "Due_Amount". Adicione um índice nesse "Due_Amount" e a consulta seria apenas:
SELECT * FROM table WHERE Due_Amount > 0

você ainda pode diferenciar entre uma linha rebatida ou não. Isso não funcionará se você precisar ter um valor devido devolvido e não devolvido ao mesmo tempo.