sql >> Base de Datos >  >> RDS >> Sqlserver

Los mejores índices para usar para una instrucción OR en SQL Server

Un índice no se puede usar en un OR como ese. prueba esto:

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

tener un índice en Due_Amount y otro en Bounced_Due_Amount.

Podría ser mejor rediseñar tu mesa. Sin conocer su lógica comercial o tabla, voy a adivinar que podría tener una columna "Bounced" S/N o 1/0 char/bit y solo una columna "Due_Amount". Agregue un índice en ese "Importe adeudado" y la consulta sería simplemente:

SELECT * FROM table WHERE Due_Amount > 0

aún podría diferenciar entre una fila rebotada o no. Esto no funcionará si necesita tener una cantidad adeudada rebotada y no rebotada al mismo tiempo.