TABLE
একটি ক্লাস্টার ইনডেক্স ছাড়া একটি প্রাথমিক কী থাকতে পারে ?
এবং TABLE
প্রাইমারী কী না করে কি ক্লাস্টার ইনডেক্স থাকতে পারে ?
কেউ কি আমাকে প্রাথমিক কী এবং ক্লাস্টার ইনডেক্সের মধ্যে সংক্ষেপে বলতে পারেন?
উত্তর:
একটি প্রাথমিক কী হ'ল যৌক্তিক ধারণা - এটি একটি সারণির এক সারিটির অনন্য শনাক্তকারী। এই হিসাবে এটির বৈশিষ্ট্যগুলির একটি গুচ্ছ রয়েছে - এটি শূন্য নাও হতে পারে এবং এটি অবশ্যই অনন্য হতে হবে। অবশ্যই, আপনি সম্ভবত তাদের অনন্য সনাক্তকারী দ্বারা রেকর্ডগুলি সন্ধান করছেন বলে প্রাথমিক কীতে একটি সূচক থাকা ভাল।
একটি ক্লাস্টার্ড সূচক একটি শারীরিক ধারণা - এটি এমন একটি সূচক যা ডিস্কে রেকর্ডগুলি সংরক্ষণ করা হয় সেই ক্রমকে প্রভাবিত করে। ডেটা অ্যাক্সেস করার সময় এটি এটিকে খুব দ্রুত সূচক করে তোলে, যদিও আপনার প্রাথমিক কীটি অনুক্রমিক সংখ্যা না হলে এটি লেখায় ধীর হতে পারে।
হ্যাঁ, আপনি ক্লাস্টারড ইনডেক্স ছাড়াই একটি প্রাথমিক কী রাখতে পারেন - এবং কখনও কখনও আপনি এটি করতে চাইতে পারেন (উদাহরণস্বরূপ যখন আপনার প্রাথমিক কীটি যোগদানের টেবিলে বিদেশী কীগুলির সংমিশ্রণ হয়, এবং আপনি ডিস্কের শাফলল ওভারহেডকে ব্যয় করতে চান না) লেখার সময়)।
হ্যাঁ, আপনি কলামগুলিতে একটি ক্লাস্টার্ড সূচক তৈরি করতে পারেন যা প্রাথমিক কী নয়।
একটি টেবিলের একটি প্রাথমিক কী থাকতে পারে যা ক্লাস্টারযুক্ত নয় এবং একটি ক্লাস্টার টেবিলের জন্য প্রাথমিক কী প্রয়োজন হয় না। সুতরাং উভয় প্রশ্নের উত্তর হ্যাঁ।
একটি ক্লাস্টার্ড সূচক পাতার স্তরে সমস্ত কলাম সংরক্ষণ করে। তার মানে একটি ক্লাস্টারড ইনডেক্সে টেবিলের সমস্ত ডেটা রয়েছে। ক্লাস্টার ইনডেক্স ছাড়া একটি টেবিলকে হিপ বলা হয়।
একটি প্রাথমিক কী হল একটি অনন্য সূচক যা ডিফল্টরূপে ক্লাস্টার হয়। ডিফল্টর অর্থ হ'ল আপনি যখন একটি প্রাথমিক কী তৈরি করেন, টেবিলটি এখনও ক্লাস্টার না করা থাকলে, প্রাথমিক কীটি একটি ক্লাস্টার্ড অনন্য সূচক হিসাবে তৈরি করা হবে। আপনি স্পষ্টভাবে nonclustered
বিকল্পটি নির্দিষ্ট না করে না করে ।
একটি উদাহরণ, যেখানে t1
একটি অবিবাহিত প্রাথমিক কী t2
রয়েছে এবং এটি ক্লাস্টার নয় তবে প্রাথমিক কী রয়েছে:
create table t1 (id int not null, col1 int);
alter table t1 add constraint PK_T1 primary key nonclustered (id);
create clustered index IX_T1_COL1 on t1 (col1);
create table t2 (id int not null, col1 int);
alter table t2 add constraint PK_T2 primary key nonclustered (id);
সবার আগে, সূচী-সংগঠিত টেবিলগুলি এবং ক্লাস্টারড ইনডেক্সগুলি একবার দেখুন । প্রকৃতপক্ষে, আমি পুরোটি পড়ার পরামর্শ দিচ্ছি ইনডেক্স লুক ব্যবহার করুন! শুরু থেকেই সাইটটি ক্লাস্টারিংয়ের বিষয়ে পৌঁছা পর্যন্ত সত্যিকার অর্থে কী চলছে তা বুঝতে to
এখন, আপনার প্রশ্নের ...
একটি টেবিলের ক্লাস্টারড ইনডেক্স ছাড়া প্রাথমিক কী থাকতে পারে?
হ্যাঁ, হিপ-ভিত্তিক সারণী তৈরি করতে আপনার প্রাথমিক কীটি ঘোষণার সময় অবিহীন কীওয়ার্ডটি ব্যবহার করুন। উদাহরণ স্বরূপ:
CREATE TABLE YOUR_TABLE (
YOUR_PK int PRIMARY KEY NONCLUSTERED
-- Other fields...
);
এটি দুর্ভাগ্যজনক, যেহেতু প্রচুর লোকেরা কেবল ডিফল্টটিকে (যা ক্লাস্টার্ড) মেনে নিয়েছে বলে মনে হয়, যদিও অনেক ক্ষেত্রে গাদা-ভিত্তিক টেবিলটি আসলে আরও ভাল হবে (সংযুক্ত নিবন্ধে আলোচিত হিসাবে)।
এবং কোনও টেবিলে প্রাথমিক কী ছাড়া ক্লাস্টার ইনডেক্স থাকতে পারে?
অন্য কয়েকটি ডিবিএমএসের বিপরীতে, এমএস এসকিউএল সার্ভার আপনাকে এমন একটি ক্লাস্টারিং সূচক দেবে যা প্রাথমিক কী থেকে আলাদা বা এমনকি প্রাথমিক কী না থাকলেও।
নিম্নলিখিত উদাহরণটি পিকে থেকে আলাদা একটি ক্লাস্টারিং সূচক তৈরি করে, যার উপরে একটি অনন্য বাধা রয়েছে, যা সম্ভবত আপনি বেশিরভাগ ক্ষেত্রেই চাইবেন:
CREATE TABLE YOUR_TABLE (
YOUR_PK int PRIMARY KEY,
YOUR_CLUSTERED_KEY int NOT NULL UNIQUE CLUSTERED
-- Other fields...
);
আপনি যদি একটি অনন্য-অনন্য ক্লাস্টারিং সূচক (ব্যবহার করে CREATE CLUSTERED INDEX ...
) চয়ন করেন, এমএস এসকিউএল সার্ভার এটিতে কোনও লুকানো ক্ষেত্র যুক্ত করে স্বয়ংক্রিয়ভাবে এটিকে অনন্য করে তুলবে।
দয়া করে নোট করুন যে ক্লাস্টারিংয়ের সুবিধাগুলি ব্যাপ্তি স্ক্যানগুলির জন্য সর্বাধিক দৃশ্যমান। যদি আপনি এমন ক্লাস্টারিং সূচক ব্যবহার করেন যা আপনার ক্লায়েন্ট অ্যাপ্লিকেশন (গুলি) দ্বারা করা পরিসীমা স্ক্যানগুলির সাথে "প্রান্তিককরণ" না করে (যেমন উপরে বর্ণিত গোপন কলামের উপর অতিরিক্ত নির্ভর করে, বা কোনও সারোগেট কীতে ক্লাস্টারিং হয় ) তবে আপনি বেশ ক্লাস্টারিংয়ের উদ্দেশ্যকে পরাস্ত করা।
কেউ কী আমাকে সংক্ষেপে প্রাথমিক কী এবং ক্লাস্টার ইনডেক্সের সম্পর্ক বলতে পারেন?
এমএস এসকিউএল সার্ভারের অধীনে, প্রাথমিক কীটি ডিফল্টরূপেও ক্লাস্টার করা হয় । আপনি উপরে বর্ণিত হিসাবে, ডিফল্ট পরিবর্তন করতে পারেন।
ক্লাস্টারড ইনডেক্সগুলি ব্যবহার করে এমএসডিএন থেকে নেওয়া উত্তরসমূহ
একটি টেবিলের ক্লাস্টার ইনডেক্স ছাড়া প্রাথমিক কী থাকতে পারে? - হ্যাঁ.
কোনও টেবিলে প্রাথমিক কী ছাড়া ক্লাস্টার ইনডেক্স থাকতে পারে? - হ্যাঁ.
একটি প্রাথমিক কী একটি সীমাবদ্ধতা যা মানগুলির স্বতন্ত্রতা নিশ্চিত করে, যেমন একটি সারি সর্বদা সেই কী দ্বারা নির্দিষ্টভাবে চিহ্নিত করা যায়।
একটি সূচক স্বয়ংক্রিয়ভাবে একটি প্রাথমিক কীতে বরাদ্দ করা হয় (সারিগুলি প্রায়শই তাদের প্রাথমিক কী দ্বারা "দেখানো হয়")।
একটি ক্লাস্টারযুক্ত সূচক হ'ল তার কলামগুলির এক (বা আরও) দ্বারা সারিগুলির যৌক্তিক ক্রম। এটিকে কার্যকরভাবে সারণির আর একটি "অনুলিপি" হিসাবে ভাবুন, সূচক জুড়ে যে কোনও কলাম দ্বারা আদেশ করা।
ক ক্লাস্টার্ড সূচক যখন প্রকৃত টেবিলটি শারীরিকভাবে কোনও নির্দিষ্ট কলাম দ্বারা আদেশ করা হয়। একটি টেবিল সবসময় (অর্থাত যখন এটি শারীরিকভাবে দ্বারা আদেশ করা হবে ক্লাস্টার সূচক থাকবে না কিছু , যে জিনিস হতে পারে অনির্ধারিত )। একটি টেবিলের একাধিক ক্লাস্টারড সূচক থাকতে পারে না, যদিও এটিতে একটি একক যৌগিক ক্লাস্টারড সূচক থাকতে পারে (যেমন টেবিলটি শারীরিকভাবে উদাহরণস্বরূপ અટক, প্রথম নাম, ডিওবি দ্বারা অর্ডার করা হয়)।
পিকে প্রায়শই (তবে সবসময় নয়) একটি ক্লাস্টারড ইনডেক্স থাকে।
এটি মূল্যবান হতে পারে তার জন্য, এমএস এসকিউএল সার্ভারে প্রাথমিক কীতে সমস্ত কলামগুলি নল নট হিসাবে সংজ্ঞায়িত করা উচিত, যখন অনন্য ক্লাস্টারড সূচক তৈরি করার প্রয়োজন হয় না। যদিও অন্যান্য ডিবি সিস্টেম সম্পর্কে নিশ্চিত না।
এটি এই প্রশ্নের উত্তর হিসাবে সম্পর্কিত নাও হতে পারে, তবে প্রাথমিক কী এবং ক্লাস্টার ইনডেক্সগুলির কয়েকটি গুরুত্বপূর্ণ দিক হল ->
যদি ক্লাস্টারড ইনডেক্সের সাথে একটি প্রাথমিক কী থাকে (ডিফল্ট যা ক্লাস্টার ইনডেক্স, তবে আমরা এটি পরিবর্তন করতে পারি), তবে আমরা সেই টেবিলের জন্য আরও একটি ক্লাস্টার্ড সূচক তৈরি করতে পারি না। তবে যদি এখনও কোনও প্রাথমিক কী সেট না থাকে এবং একটি গোষ্ঠী সূচক থাকে তবে আমরা ক্লাস্টারড ইনডেক্সের সাথে একটি প্রাথমিক কী তৈরি করতে পারি না।