Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Indeks terbaik untuk digunakan untuk Pernyataan OR di SQL Server

Indeks tidak dapat digunakan pada OR seperti itu. coba ini:

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

memiliki indeks di Due_Amount dan satu lagi di Bounced_Due_Amount.

Mungkin lebih baik untuk mendesain ulang meja Anda. Tanpa mengetahui logika atau tabel bisnis Anda, saya akan menebak bahwa Anda dapat memiliki kolom "Bounced" Y/N atau 1/0 char/bit dan hanya kolom "Due_Amount". Tambahkan indeks pada "Due_Amount" itu dan kuerinya akan menjadi:

SELECT * FROM table WHERE Due_Amount > 0

Anda masih bisa membedakan antara baris Terpental atau tidak. Ini tidak akan berfungsi jika Anda harus memiliki jumlah jatuh tempo yang terpental dan tidak terpental secara bersamaan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EF4.1:Mungkinkah memiliki hubungan nol-atau-satu ke nol-atau-satu (0..1 hingga 0.1)?

  2. Skrip SQL Server 2008 untuk Menjatuhkan Batasan PK yang memiliki Nama yang Dihasilkan Sistem

  3. Bagaimana melakukan penyorotan hasil dari kueri teks lengkap SQL Server

  4. Offset Baris di SQL Server

  5. Pencocokan fuzzy menggunakan T-SQL