Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Най-добрият(ите) индекс(и) за използване за оператор ИЛИ в SQL Server

Индекс не може да се използва за ИЛИ като това. опитайте това:

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

имат индекс на Due_Amount и друг на Bounced_Due_Amount.

Може би е по-добре да преработите масата си. Без да знам вашата бизнес логика или таблица, ще предположа, че можете да имате колона „Отхвърлено“ Y/N или 1/0 char/bit и само колона „Due_Amount“. Добавете индекс към тази "Due_Amount" и заявката ще бъде просто:

SELECT * FROM table WHERE Due_Amount > 0

все още можете да правите разлика между отхвърлен или не ред. Това няма да работи, ако трябва да имате едновременно върната и неотхвърлена дължима сума.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на стойност на шестнадесетичен низ към полето за изображение на sql сървър добавя допълнителна 0

  2. Как да намерите настройката ANSI_NULLS на базата данни в SQL Server (T-SQL)

  3. RowVersion и производителност

  4. Как да изпълним dtsx пакети чрез командния ред

  5. Как да филтрирате обекти в SQL Server Management Studio (SSMS) - SQL Server / TSQL урок, част 19