আসুন একটি উদাহরণ বিবেচনা করুন: চালানের রেকর্ড সহ একটি টেবিল এবং চালান লাইনের আইটেম রেকর্ড সহ একটি সম্পর্কিত টেবিল। ক্লায়েন্ট সিউডো কোড বিবেচনা করুন:
for each (invoice in invoices)
let invoiceLines = FindLinesFor(invoice)
...
আপনার যদি 10 টি লাইনের সাথে 100,000 চালান থাকে তবে এই কোডটি 1 মিলিয়নের টেবিল থেকে 10 টি চালান লাইনের সন্ধান করবে এবং এটি 100,000 বার করবে। টেবিলের আকার বাড়ার সাথে সাথে নির্বাচিত ক্রিয়াকলাপগুলির সংখ্যা বৃদ্ধি পায় এবং প্রতিটি নির্বাচিত ক্রিয়াকলাপের ব্যয় বৃদ্ধি পায়।
কম্পিউটার হয়ে উঠুন দ্রুত, আপনি কয়েক হাজার রেকর্ড বা তার চেয়ে কম পরিমাণে থাকলে দুটি পদ্ধতির মধ্যে পারফরম্যান্সের পার্থক্যটি লক্ষ্য করতে পারেন না। কারণ ব্যয় বৃদ্ধি লিনিয়ারের চেয়ে বেশি, রেকর্ডের সংখ্যা বাড়ার সাথে সাথে (কয়েক মিলিয়ন লোকেরা বলুন), আপনি একটি তাত্পর্য লক্ষ্য করতে শুরু করবেন এবং ডেটা সেটের আকার বাড়ার সাথে পার্থক্যটি কম সহনীয় হয়ে উঠবে।
যোগ দিন, তবে। টেবিলের সূচিগুলি ব্যবহার করবে এবং দুটি ডেটা সেট একীভূত করবে। এর অর্থ আপনি এলোমেলোভাবে এন বার অ্যাক্সেস না করে একবার দ্বিতীয় টেবিলটি কার্যকরভাবে স্ক্যান করছেন। যদি কোনও বিদেশী কী সংজ্ঞায়িত করা থাকে তবে ইতিমধ্যে অভ্যন্তরীণভাবে সম্পর্কিত রেকর্ডগুলির মধ্যে লিঙ্কগুলি ডাটাবেসের মধ্যে রয়েছে।
আপনি নিজে এটি করছেন ভেবে দেখুন। আপনার কাছে শিক্ষার্থীদের বর্ণমালার তালিকা এবং সমস্ত শিক্ষার্থীর গ্রেড রিপোর্ট (ক্লাসে এক পৃষ্ঠায়) সহ একটি নোটবুক রয়েছে। নোটবুকটি শিক্ষার্থীদের নাম অনুসারে বাছাই করা হয় তালিকার একই ক্রমে। আপনি কীভাবে এগিয়ে যেতে পছন্দ করবেন?
- তালিকা থেকে একটি নাম পড়ুন।
- নোটবুক খুলুন।
- শিক্ষার্থীর নাম সন্ধান করুন।
- আপনি পরবর্তী শিক্ষার্থী বা শেষ পৃষ্ঠায় না পৌঁছানো পর্যন্ত পৃষ্ঠাগুলি ঘুরিয়ে শিক্ষার্থীর গ্রেডগুলি পড়ুন।
- নোটবুকটি বন্ধ করুন।
- পদ্ধতি পুনরাবৃত্তি করুন।
বা:
- নোটবুকটি প্রথম পৃষ্ঠায় খুলুন।
- তালিকা থেকে একটি নাম পড়ুন।
- নোটবুক থেকে এই নামের জন্য কোনও গ্রেড পড়ুন।
- আপনি শেষ না হওয়া পর্যন্ত 2-3 পদক্ষেপ পুনরাবৃত্তি করুন
- নোটবুকটি বন্ধ করুন।