প্রকৃতপক্ষে, আপনার কাছে ক্লাস্টারড সূচক বা প্রাইমারি কী তৈরি করার দরকার নেই, কারণ অনন্য সূচক এবং অ-অনন্য সূচকগুলি কাজটি পরিচালনা করতে পারে। এসকিউএল সার্ভার কমপক্ষে ১.১ সংস্করণ থেকে একটি ক্লাস্টারড ইনডেক্সকে সমর্থন করেছে, তবে প্রাথমিক কী কেবলমাত্র একটি "ধারণা" ছিল যা প্রোগ্রামাররা একটি অনন্য সূচককে সংজ্ঞায়িত করে প্রয়োগ করেছিল।
তবে দেখে মনে হয় যে প্রাথমিক কী এবং ক্লাস্টার ইনডেক্স উভয়ই ডাটাবেসের সিংহভাগ মূল্যবান ধারণা।
নীচে দেখানো হিসাবে কিছু সূচীকরণ বিকল্পগুলির আংশিক বিবরণ দেখতে আসুন এসকিউএল সার্ভার ডকুমেন্টেশনটি দেখি।
ক্লাস্টার্ড সূচক: https://msdn.microsoft.com/en-us/library/ms190457.aspx
- ক্লাস্টারড ইনডেক্সগুলি টেবিলে ডেটা সারিগুলিকে বাছাই করে এবং তাদের মূল মানগুলির উপর ভিত্তি করে সঞ্চয় করে। এগুলি সূচী সংজ্ঞায় অন্তর্ভুক্ত কলামগুলি।
- টেবিলের জন্য কেবল একটি ক্লাস্টার ইনডেক্স থাকতে পারে
প্রাথমিক কী: https://msdn.microsoft.com/en-us/library/ms190457.aspx
একটি টেবিলের মধ্যে কেবল একটি প্রাথমিক কী বাধা থাকতে পারে।
একটি প্রাথমিক মূল সীমাবদ্ধতার মধ্যে সংজ্ঞায়িত সমস্ত কলামগুলি নাল নয় হিসাবে সংজ্ঞায়িত করা উচিত।
প্রাথমিক কীটি ক্লাস্টারড ইনডেক্স (কোনও ক্লাস্টারড ইনডেক্স না থাকলে ডিফল্ট) বা একটি ক্লাস্টারযুক্ত সূচক হিসাবে তৈরি করা যেতে পারে।
অনন্য সূচী: https://msdn.microsoft.com/en-us/library/ms187019.aspx
যখন আপনি একটি অনন্য প্রতিবন্ধকতা তৈরি করেন, তখন একটি অনন্য অবিচ্ছিন্ন সূচক ডিফল্টরূপে একটি অনন্য প্রতিবন্ধকতা প্রয়োগ করতে তৈরি করা হয়।
যদি ক্লাস্টারড সূচকটি ইতিমধ্যে টেবিলের জন্য উপস্থিত না থাকে তবে আপনি একটি অনন্য ক্লাস্টার্ড সূচক নির্দিষ্ট করতে পারেন।
এর অর্থ হ'ল ক্লাস্টার ইনডেক্স এবং প্রাথমিক কীগুলি সম্পর্কে আপনার প্রশ্নটি নীচের কয়েকটি সমস্যা সম্পর্কে সত্যই। দয়া করে নোট করুন যে প্রতিটি টেবিল একই সূচক পরিকল্পনার দ্বারা উপকৃত হয় না।
ক্লাস্টারড সূচক থেকে আলাদা হয়ে গেলে প্রাথমিক কী থেকে আমি উপকৃত হব?
সম্ভবত যখন ক্লাস্টারড ইনডেক্স বিস্তৃত হবে (উদাহরণস্বরূপ, পাঠ্য তথ্যের 5 কলাম, তবে প্রাথমিক কীটি ছোট (INT বা BIGINT), যেমন আপনি বর্ণনা করছেন বলে মনে হয়।
- একটি বিস্তৃত ক্লাস্টারড সূচক আপনাকে ক্লাস্টারড ইনডেক্স ( টেবিল হিসাবে পরিচিত ) থেকে সিরিয়াল উত্তর সরবরাহকারী প্রশ্নের একটি সাবসেটের জন্য সূচী থেকে দ্রুত সারি নির্বাচন করার অনুমতি দেয় । উদাহরণস্বরূপ, একটি 5-কলাম ক্লাস্টারড ইনডেক্স সি 1, সি 2, সি 3, সি 4, সি 5 বা সি 1, সি 2, সি 3, সি 4 এবং আরও নীচে সি 1 এ স্ক্যান করতে সহায়তা করবে।
- দ্রষ্টব্য: যদি সারিগুলি বড় হয় তবে এটি আপনাকে সারিগুলির ক্রমিক সেটটি বেছে নেওয়ার ক্ষেত্রে কিছুটা দ্রুতগতি দিতে পারে , বিশেষত যদি টেবিলে থাকা অন্যান্য কলামগুলি নিয়মিত ফলাফলের সেটে অন্তর্ভুক্ত থাকে।
- সেক্ষেত্রে অন্যান্য টেবিলে সারি সীমাবদ্ধ রাখতে বিদেশী কী হিসাবে প্রয়োজনীয় মান সরবরাহ করতে আপনি প্রাসঙ্গিক অখণ্ডতার জন্য প্রাথমিক কীটি ব্যবহার করতে পারেন । পিকেটি ছোট এবং সুতরাং এফকে উল্লেখযোগ্য টেবিল (গুলি) এর আকারের উপর একটি ছোট্ট হিট।
- তবে নোট করুন যে ক্লাস্টারড ইনডেক্সের কোনও টেবিলে তৈরি হওয়া যে কোনও সূচীতে এই টেবিলটিতে আপনি তৈরি অন্যান্য সূচীতে সমস্ত ক্লাস্টার কলাম অন্তর্ভুক্ত থাকবে। একটি বিস্তৃত ক্লাস্টারড ইনডেক্স সেই টেবিলের সমস্ত নন-ক্লাস্টারযুক্ত সূচকের আকার বাড়িয়ে তুলবে।
আপনার কি একা প্রাথমিক কী ক্লাস্টারড ইনডেক্স করা উচিত?
আপনার যদি একটি ছোট প্রাথমিক কী (INT বা BIGINT) থাকে এবং এটি ক্লাস্টারড সূচক হয় তবে ক্লাস্টার কলামগুলির ওভারহেড তুলনামূলকভাবে ছোট। যদিও এই ক্ষেত্রে ক্লাস্টার্ড প্রাথমিক কীটি এই টেবিলের প্রতিটি সূচীতেও উপস্থিত থাকবে, উপরে উল্লিখিত ওয়াইড ক্লাস্টারের চেয়ে মূল্য দিতে এটি একটি ছোট দাম।
এই প্রাথমিক কী ক্লাস্টারড ইনডেক্স সাধারণত ক্রমিকভাবে অনেকগুলি সারি নির্বাচন করার জন্য একটি সহজ পথ সরবরাহ করে না।
এখন আপনি একটি ক্লাস্টারড প্রাইমারি কী তৈরি করেছেন, আপনি একবারে ক্লাস্টারড ইনডেক্সে অন্তর্ভুক্ত করার পরিকল্পনা করেছিলেন এমন অন্যান্য কলামগুলির কী হবে ?
সি 1, সি 2, সি 3, সি 4, সি 5-এর কলামের বিস্তৃত অনুসন্ধানের মানদণ্ডকে সূচক করার জন্য প্রয়োজনীয় হিসাবে একটি অনন্য (বা একটি অনন্য) সূচক তৈরি করুন। এই "নকল ক্লাস্টারড" সূচকের মানগুলি সেই 5 টি কলামের জন্য দ্রুত অনুসন্ধানের পথ হিসাবে কাজ করতে পারে। যদি নিয়মিত বা পাশাপাশি নিয়মিতভাবে নির্বাচিত হয় এমন দুটি বা অন-ইনডেক্সযুক্ত কলাম থাকে তবে সেগুলি সূচকে অন্তর্ভুক্ত করা যেতে পারে INCLUDE (Doctor_Name, Diagnosis_Synopsis)
।
যদিও আমি সাধারণ ক্লাস্টার ইনডেক্স এবং প্রাথমিক কীগুলি দরকারী মনে করি সেগুলি কোনও টেবিলে বা ডেটাবেসে ব্যবহার করা উচিত কিনা তা নিয়ে চিন্তাভাবনার কিছু ভাল কারণ রয়েছে।
আপনার কি আদৌ একটি ক্লাস্টার্ড সূচক দরকার?
যদি আপনি সূচকগুলি (অনন্য সূচক এবং অ-স্বতন্ত্র সূচকগুলি) তৈরি করেন এবং ক্লাস্টারড ইনডেক্স হিসাবে ওভারহেড ছাড়াই প্রাথমিক কীটি সংজ্ঞায়িত করেন তবে আপনি খুঁজে পেতে পারেন যে সংক্ষিপ্ত সূচকগুলি আপনাকে আপনার প্রশ্নের জন্য প্রয়োজনীয় যা আপনাকে সরবরাহ করে।
ক্লাস্টারড ইনডেক্স এবং প্রাথমিক কীগুলিতে কিছু কার্যকর আচরণ রয়েছে তবে মনে রাখবেন যে এটি সত্যিকারের সূচকে সবচেয়ে গুরুত্বপূর্ণ। আপনার আবেদনের বাস্তবতাকে বিবেচনায় আনতে সূচি কৌশলটি তৈরি করুন। OneBigTable
আপনি বেশিরভাগ টেবিলগুলির জন্য যা ব্যবহার করেন তার থেকে ভিন্ন একটি সূচী কৌশল প্রয়োজন হতে পারে ।
ক্লাস্টারড ইনডেক্স ছাড়া আপনার ডেটা র আইডেন্টিফায়ার (আরআইডি) এর সাথে একটি হিপ হিসাবে সংরক্ষণ করা হবে যা মোটেই ভাল অনুসন্ধানের ব্যবস্থা নয়। তবে, পূর্বে উল্লিখিত হিসাবে, আপনি আপনার প্রশ্নগুলি পরিচালনা করতে অনন্য এবং অ-অনন্য সূচক তৈরি করতে পারেন।
যা আপনাকে এখন গাদা বিবেচনায় নিয়ে যায়:
গাদা এবং সূচি: https://msdn.microsoft.com/en-us/library/hh213609.aspx
- যখন কোনও টেবিলটি গাদা হিসাবে সংরক্ষণ করা হয়, তখন পৃথক সারিগুলি ফাইল নম্বর, ডেটা পৃষ্ঠা নম্বর এবং পৃষ্ঠায় স্লট সমন্বিত একটি সারি সনাক্তকারী (আরআইডি) এর রেফারেন্স দ্বারা চিহ্নিত করা হয়। সারি আইডি একটি ছোট এবং দক্ষ কাঠামো। (তবে এটি কোনও সূচক নয় ))
- কখনও কখনও ডেটা আর্কিটেক্টরা নন ক্ল্লাস্টারড ইনডেক্সের মাধ্যমে ডেটা সর্বদা অ্যাক্সেস করার সময় ডেটা আর্কিটেক্টস হিপস ব্যবহার করেন এবং আরআইডি একটি ক্লাস্টারড ইনডেক্স কী থেকে ছোট হয় ।
তবে আপনার যদি কোনও বড় ডেটা সেটে কিছু 'হট স্পট' থাকে তবে আপনি অন্য ধরণের সূচকটিও দেখতে পারেন:
ফিল্টার সূচক: https://msdn.microsoft.com/en-us/library/cc280372.aspx
একটি সু-নকশিত ফিল্টারড সূচক ক্যোয়ারি পারফরম্যান্স এবং এক্সিকিউশন পরিকল্পনার মানকে উন্নত করে কারণ এটি একটি পূর্ণ-সারণী নন ক্ল্লাস্টার্ড সূচকগুলির চেয়ে ছোট এবং পরিসংখ্যানগুলিকে ফিল্টার করেছে। ফিল্টার করা পরিসংখ্যানগুলি পূর্ণ টেবিলের পরিসংখ্যানের তুলনায় আরও নির্ভুল কারণ তারা ফিল্টারড সূচীতে কেবলমাত্র সারিগুলিকে cover েকে দেয় ।
ফিল্টারড সূচকগুলিতে অনেকগুলি বিধিনিষেধ রয়েছে যা ফিল্টারড সূচকগুলির লিঙ্কে বর্ণিত।
তবে, আপনি যদি প্রাথমিক কী এবং গোষ্ঠী সূচকগুলি পুরোপুরি বাদ দেওয়ার সম্ভাবনাটি সম্পর্কে ভাবতে আগ্রহী হন তবে আপনি নীচে লিঙ্কিত মার্কাস উইন্যান্ডের পোস্টটি পড়তে পারেন। কিছু কোড নমুনা সহ তিনি তার কারণগুলি প্রদর্শন করেন যাতে পরামর্শ দেওয়া যায় যে এই বৈশিষ্ট্যগুলি ব্যবহার করে ফোরোগোয় করা অনেক সময় ভাল ধারণা হতে পারে।
http://use-the-index-luke.com/blog/2014-01/unreasonable-defaults-primary-key-clustering-key
তবে সবশেষে আপনার অ্যাপ্লিকেশনটি বোঝার এবং কোডটি, টেবিলগুলি, সূচিগুলি এবং তাই আপনি যে কাজটি করছেন তার সাথে মানিয়ে নেওয়ার জন্য আবার ফিরে আসে।