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

क्या मैं कॉलम x पर एक इंडेक्स बनाकर विशालटेबल क्वेरी से एक सेलेक्ट डिस्टिंट x को ऑप्टिमाइज़ कर सकता हूँ?

यह संभवतः अनुक्रमण की समस्या नहीं है, बल्कि डेटा डिज़ाइन में से एक है। सामान्यीकरण, सटीक होना। तथ्य यह है कि आपको किसी फ़ील्ड के अलग-अलग मानों से पूछताछ करने की आवश्यकता है, और यहां तक ​​​​कि एक इंडेक्स जोड़ने के इच्छुक भी, एक मजबूत संकेतक है कि फ़ील्ड को एक अलग तालिका में एक (छोटी) जॉइन कुंजी के साथ सामान्यीकृत किया जाना चाहिए। फिर बहुत छोटी लुकअप विदेशी तालिका को स्कैन करके अलग-अलग मान तुरंत उपलब्ध होंगे।

अपडेट करें
एक समाधान के रूप में, आप एक अनुक्रमित दृश्य 'विशिष्ट' फ़ील्ड द्वारा कुल मिलाकर। COUNT_BIG एक समुच्चय है जिसकी अनुक्रमित दृश्यों में अनुमति है:

create view vwDistinct
with schemabinding
as select x, count_big(*)
from schema.hugetable
group by x;

create clustered index cdxDistinct on vwDistinct(x);

select x from vwDistinct with (noexpand);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्तंभ मान के आधार पर पंक्तियाँ बनाना

  2. SQL सर्वर 2008 उत्पन्न स्क्रिप्ट विज़ार्ड मुझे एक स्क्रिप्ट देता है जिसके परिणामस्वरूप बंद उद्धरण चिह्न होते हैं

  3. SQL सर्वर (T-SQL उदाहरण) में 'datetimeoffset' को 'तिथि' में बदलें

  4. तालिका ए से चयन * [कॉलम ए को छोड़कर] का उपयोग कर कॉलम को बाहर निकालें?

  5. डेटाबेस में प्रत्येक तालिका की पहली 3 पंक्तियों का चयन करें