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

एसक्यूएल में एक स्ट्रिंग कॉलम के लिए इंडेक्स कैसे बनाएं?

यदि आपकी स्ट्रिंग 900 बाइट्स से अधिक लंबी है, तो यह एक इंडेक्स कुंजी नहीं हो सकती है, चाहे वह परिवर्तनशील हो या निश्चित लंबाई।

एक विचार यह होगा कि गणना किए गए कॉलम को जोड़कर कम से कम खोज को और अधिक चयनात्मक बनाया जाए। उदा.

CREATE TABLE dbo.Strings
(
  -- other columns,
  WholeString VARCHAR(4000),
  Substring AS (CONVERT(VARCHAR(10), WholeString) PERSISTED
);
CREATE INDEX ss ON dbo.Strings(Substring);

अब अद्यतन करने के लिए कोई पंक्ति खोजते समय, आप कह सकते हैं:

WHERE s.Substring = LEFT(@string, 10)
AND s.WholeString = @string;

यह कम से कम ऑप्टिमाइज़र को अपनी खोज को इंडेक्स पेजों तक सीमित करने में मदद करेगा जहां सटीक मिलान के रहने की सबसे अधिक संभावना है। आप उस लंबाई के साथ प्रयोग करना चाह सकते हैं क्योंकि यह इस बात पर निर्भर करता है कि आपके पास कितने समान स्ट्रिंग्स हैं और कौन सी बात ऑप्टिमाइज़र को एक पेज को अलग करने में सबसे अच्छी मदद करेगी। आप ss . में कुछ या सभी अन्य स्तंभों को शामिल करके भी प्रयोग करना चाह सकते हैं इंडेक्स, INCLUDE . के साथ या उपयोग किए बिना खंड (क्या यह उपयोगी है विभिन्न कारकों पर बहुत भिन्न होगा जैसे कि आपकी अपडेट क्वेरी और क्या करती है, पढ़ने/लिखने का अनुपात, आदि)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस स्वामी (DBO) को बाहरी एक्सेस असेंबली की अनुमति कैसे दें?

  2. एसएसएमएस - एसक्यूएल सर्वर / टीएसक्यूएल ट्यूटोरियल पार्ट 22 में ऑब्जेक्ट एक्सप्लोरर डिटेल विंडोज का उपयोग करके कई ऑब्जेक्ट्स को कैसे हैंडल करें

  3. यादृच्छिक तिथि के साथ पंक्तियों को कैसे अपडेट करें

  4. अगर एसक्यूएल सर्वर अद्यतन क्वेरी में स्थिति है

  5. पिवट गतिशील कॉलम, कोई एकत्रीकरण नहीं