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

शामिल होने में बहुत समय लगता है

शामिल सभी क्षेत्रों को देखते हुए, प्रत्येक टेबल पर एक कवरिंग इंडेक्स में कॉलम शामिल हो सकते हैं

t1: Y, F, H, A
t2: X, G, C, D, E

कोई भी मानदंड कितना चयनात्मक है:t2.X, t2.G या t1.Y, t1.F, t1.H?

यदि कोई भी व्यक्तिगत कॉलम पर्याप्त रूप से चयनात्मक नहीं है (आदर्श रूप से 0.5% या उससे कम), तो आप एक या कई कवरिंग इंडेक्स बनाना चाह सकते हैं जिसमें कई कॉलम शामिल हों, उदाहरण के लिए

t2 (G, X)
t1 (H, F, Y)

नोट: किसी अनुक्रमणिका में स्तंभों का क्रम बहुत महत्वपूर्ण है - हमेशा सबसे अधिक चयनात्मक (वह जो स्तंभ डेटा को सबसे विशिष्ट सेटों में विभाजित करता है) को पहले रखें।

भंडारण की कीमत पर, आप इंडेक्स में ही सभी आवश्यक कॉलम प्रदान करके इंडेक्स को क्वेरी को कवर कर सकते हैं। इसका मतलब है कि क्वेरी को टेबल डेटा पर वापस जाने की आवश्यकता नहीं है।

create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)

संपादित करें

ऐसा लगता है कि मैंने वहां एक SQL सर्वर डीडीएल फिसल दिया है। Oracle में, आपको t2 (G,X, C,D,E) बनने के लिए अनुक्रमणिका का विस्तार करना होगा - लेकिन यह अनुक्रमणिका उपयोग के लिए चयनात्मकता आवश्यकताओं को बढ़ाता है क्योंकि अनुक्रमणिका कुंजी बहुत लंबी हो जाती है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle के साथ AWS पायथन लैम्ब्डा

  2. एक वर्चर से स्वरों का चयन करें, Oracle PL/SQL

  3. प्रदर्शन:सबक्वेरी या ज्वाइनिंग

  4. सोलारिस 10 . पर बेहतर मेमोरी (हीप) प्रबंधन

  5. हाइबरनेट ओरेकल अनुक्रम बड़े अंतर पैदा करता है