sql >> Databáze >  >> RDS >> Sqlserver

Nejlepší index(y) pro použití pro příkaz OR na serveru SQL Server

Na podobném OR nelze použít index. zkuste toto:

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

mít index na Due_Amount a další na Bounced_Due_Amount.

Možná by bylo lepší předělat váš stůl. Aniž bych znal vaši obchodní logiku nebo tabulku, budu hádat, že byste mohli mít sloupec „Odražený“ Y/N nebo 1/0 char/bit a pouze sloupec „Due_Amount“. Přidejte index k této "Due_Amount" a dotaz by byl:

SELECT * FROM table WHERE Due_Amount > 0

stále můžete rozlišovat mezi řádkem odraženým nebo ne. Toto nebude fungovat, pokud potřebujete mít současně vrácenou i nevrácenou dlužnou částku.



  1. Funkce PostgreSQL age():různé/neočekávané výsledky při přistání v jiném měsíci

  2. Jak zakázat všechna omezení CHECK a cizích klíčů v databázi na serveru SQL (příklady T-SQL)

  3. T-SQL datetime zaokrouhlené na nejbližší minutu a nejbližší hodiny pomocí funkcí

  4. Příklady MONTHNAME() – MySQL