आइए एक उदाहरण पर विचार करें: इनवॉइस रिकॉर्ड के साथ एक तालिका, और इनवॉइस लाइन आइटम रिकॉर्ड के साथ संबंधित तालिका। क्लाइंट छद्म कोड पर विचार करें:
for each (invoice in invoices)
let invoiceLines = FindLinesFor(invoice)
...
यदि आपके पास प्रत्येक 10 लाइनों के साथ 100,000 चालान हैं, तो यह कोड 1 मिलियन की तालिका से 10 चालान लाइनों को देखेगा, और यह 100,000 बार ऐसा करेगा। जैसे-जैसे टेबल का आकार बढ़ता है, चुनिंदा ऑपरेशनों की संख्या बढ़ती जाती है, और प्रत्येक चयनित ऑपरेशन की लागत बढ़ती जाती है।
Bease कंप्यूटर तेज़ हैं, यदि आपके पास कई हज़ार रिकॉर्ड या कम हैं, तो आप दो दृष्टिकोणों के बीच एक प्रदर्शन अंतर नहीं देख सकते हैं। क्योंकि लागत वृद्धि रैखिक से अधिक है, क्योंकि रिकॉर्ड की संख्या बढ़ जाती है (लाखों में, कहते हैं), आपको अंतर दिखाई देना शुरू हो जाएगा, और अंतर कम सहनशील हो जाएगा क्योंकि डेटा सेट का आकार बढ़ता है।
हालांकि, शामिल हों। तालिका के अनुक्रमित का उपयोग करेगा और दो डेटा सेट को मर्ज करेगा। इसका मतलब है कि आप इसे प्रभावी ढंग से एन बार एक्सेस करने के बजाय एक बार दूसरी टेबल को प्रभावी ढंग से स्कैन कर रहे हैं। यदि कोई विदेशी कुंजी परिभाषित है, तो डेटाबेस में आंतरिक रूप से संग्रहीत संबंधित रिकॉर्ड के बीच पहले से ही लिंक हैं।
खुद ऐसा करने की कल्पना करो। आपके पास छात्रों की एक वर्णमाला सूची है और सभी छात्रों की ग्रेड रिपोर्ट (प्रति कक्षा एक पृष्ठ) के साथ एक नोटबुक है। नोटबुक को छात्रों के नामों के क्रम में क्रमबद्ध किया गया है, सूची के समान क्रम में। आप आगे बढ़ना कैसे पसंद करेंगे?
- सूची से एक नाम पढ़ें।
- िकताबेखोलो।
- छात्र का नाम खोजें।
- जब तक आप अगले छात्र या अंतिम पृष्ठ तक नहीं पहुँचते तब तक पृष्ठों को मोड़ते हुए छात्र के ग्रेड पढ़ें।
- नोटबुक को बंद करें।
- दोहराएँ।
या:
- नोटबुक को पहले पृष्ठ पर खोलें।
- सूची से एक नाम पढ़ें।
- नोटबुक से उस नाम के लिए कोई भी ग्रेड पढ़ें।
- अंत तक पहुंचने तक 2-3 चरणों को दोहराएं
- नोटबुक को बंद करें।