Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में OR स्टेटमेंट के लिए उपयोग करने के लिए सर्वश्रेष्ठ इंडेक्स (एस)

एक इंडेक्स का उपयोग OR पर नहीं किया जा सकता है। इसे आजमाएं:

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

एक इंडेक्स ड्यू_अमाउंट पर है और दूसरा बाउंस_ड्यू_अमाउंट पर है।

अपनी तालिका को फिर से डिज़ाइन करना बेहतर हो सकता है। आपके व्यावसायिक तर्क या तालिका को जाने बिना, मुझे लगता है कि आपके पास "बाउंस" वाई/एन या 1/0 चार/बिट कॉलम और केवल "ड्यू_एमाउंट" कॉलम हो सकता है। उस "ड्यू_अमाउंट" पर एक इंडेक्स जोड़ें और क्वेरी बस होगी:

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. चयनित पंक्ति से मूल्य के साथ OUTPUT insert.id को मिलाएं

  2. डेटाबेस से सभी कनेक्शनों को समाप्त करने के लिए स्क्रिप्ट (RESTRICTED_USER ROLLBACK से अधिक)

  3. PHP का उपयोग करके SQL संग्रहीत कार्यविधि से वापसी मान प्राप्त करें

  4. DATETIME से DATETIME2 तक के रूपांतरण का मान क्यों बदलता है?

  5. क्या SQL सर्वर में अनुमानित क्वेरी रन टाइम की पहचान करने का कोई तरीका/उपकरण है?