রিমাস যেমন বলেছে এটি আপনার কাজের চাপের উপর নির্ভর করে।
আমি যদিও স্বীকৃত উত্তরের একটি বিভ্রান্তিকর দিকটি সম্বোধন করতে চাই।
সূচকের সমস্ত কলামে সমতা অনুসন্ধান করছে এমন প্রশ্নের জন্য কোনও উল্লেখযোগ্য পার্থক্য নেই।
নীচে দুটি সারণী তৈরি করে এবং সেগুলিকে অভিন্ন ডেটা দিয়ে পপুলেট করে। পার্থক্যটি হ'ল একটিতে কীগুলি বেশিরভাগ থেকে কমপক্ষে নির্বাচনী এবং অন্যটি বিপরীত থেকে অর্ডার করা হয়।
CREATE TABLE Table1(MostSelective char(800), SecondMost TINYINT, Least CHAR(1), Filler CHAR(4000) null);
CREATE TABLE Table2(MostSelective char(800), SecondMost TINYINT, Least CHAR(1), Filler CHAR(4000) null);
CREATE NONCLUSTERED INDEX MyINDX on Table1(MostSelective,SecondMost,Least);
CREATE NONCLUSTERED INDEX MyINDX2 on Table2(Least,SecondMost,MostSelective);
INSERT INTO Table1 (MostSelective, SecondMost, Least)
output inserted.* into Table2
SELECT TOP 26 REPLICATE(CHAR(number + 65),800), number/5, '~'
FROM master..spt_values
WHERE type = 'P' AND number >= 0
ORDER BY number;
এখন উভয় টেবিলের বিরুদ্ধে একটি জিজ্ঞাসা করছেন ...
SELECT *
FROM Table1
WHERE MostSelective = REPLICATE('P', 800)
AND SecondMost = 3
AND Least = '~';
SELECT *
FROM Table2
WHERE MostSelective = REPLICATE('P', 800)
AND SecondMost = 3
AND Least = '~';
... দু'জনেই সূচক জরিমানা ব্যবহার করে এবং উভয়কেই একই ব্যয় দেওয়া হয়।
গৃহীত উত্তরের এএসসিআইআই আর্ট আসলে সূচকগুলি কীভাবে কাঠামোগত হয় তা নয়। টেবিল 1 এর সূচী পৃষ্ঠাগুলি নীচে উপস্থাপন করা হয়েছে (পূর্ণ আকারে খোলার জন্য চিত্রটিতে ক্লিক করুন)।
সূচী পৃষ্ঠাগুলিতে পুরো কীটি রয়েছে এমন সারি রয়েছে (সেক্ষেত্রে সারি শনাক্তকারীর জন্য প্রকৃতপক্ষে একটি অতিরিক্ত কী কলাম রয়েছে যা সূচকটি অনন্য হিসাবে ঘোষণা করা হয়নি তবে এটি সম্পর্কে অবহেলা করা যেতে পারে এখানে আরও তথ্য পাওয়া যাবে )।
উপরের ক্যোয়ারির জন্য এসকিউএল সার্ভার কলামগুলির নির্বাচনের বিষয়ে চিন্তা করে না। এটি মূল পৃষ্ঠার একটি বাইনারি অনুসন্ধান করে এবং আবিষ্কার করে যে কীটি (PPP...,3,~ )
রয়েছে >=(JJJ...,1,~ )
এবং < (SSS...,3,~ )
তাই এটি পৃষ্ঠাটি পড়া উচিত 1:118
। এরপরে এটি সেই পৃষ্ঠায় মূল এন্ট্রিগুলির একটি বাইনারি অনুসন্ধান করে এবং নীচে ভ্রমণ করার জন্য পাতার পৃষ্ঠাটি সন্ধান করে।
নির্বাচনের ক্রম অনুসারে সূচকে পরিবর্তন করা বাইনারি অনুসন্ধান থেকে মূল তুলনাগুলির প্রত্যাশিত সংখ্যার বা পৃষ্ঠাগুলির সংখ্যাকে প্রভাবিত করে না যা সূচী অনুসন্ধান করতে নেভিগেট করা দরকার of সেরা এটা পারে সীমিতভাবে কী তুলনা নিজেই গতি বাড়াতে।
কখনও কখনও প্রথমে সর্বাধিক সিলেক্টিক ইনডেক্স অর্ডার করা আপনার কাজের চাপের ক্ষেত্রে অন্যান্য প্রশ্নের জন্য অর্থবোধ করে।
উদাহরণস্বরূপ যদি কাজের চাপে নীচের দুটি ফর্মের প্রশ্ন থাকে।
SELECT * ... WHERE MostSelective = 'P'
SELECT * ...WHERE Least = '~'
উপরের সূচিগুলি তাদের কোনওটির জন্য আবরণ করছে না। MostSelective
একটি সন্ধান এবং সন্ধানের সাথে সার্থক করার জন্য একটি পরিকল্পনা করার পক্ষে যথেষ্ট নির্বাচনী তবে এর বিরুদ্ধে অনুসন্ধানটি Least
নেই।
তবে এই দৃশ্যাবলী (কোনও যৌগিক সূচকের শীর্ষস্থানীয় কলাম (গুলি) এর উপসেট অন আচ্ছাদন সূচক নয়) কেবলমাত্র ক্যোয়ারির একটি সম্ভাব্য ক্লাস যা একটি সূচক দ্বারা সহায়তা করা যেতে পারে। আপনি যদি সত্যই MostSelective
নিজের বা কোনও সংমিশ্রণ MostSelective, SecondMost
দ্বারা অনুসন্ধান করেন না এবং সর্বদা তিনটি কলামের সংমিশ্রণে অনুসন্ধান করেন তবে এই তাত্ত্বিক সুবিধা আপনার পক্ষে অকেজো।
বিপরীত প্রশ্ন যেমন
SELECT MostSelective,
SecondMost,
Least
FROM Table2
WHERE Least = '~'
ORDER BY SecondMost,
MostSelective
সাধারণভাবে নির্ধারিত একটির বিপরীত ক্রম পেয়ে সহায়তা করা হবে - যেমনটি ক্যোয়ারীটি অন্তর্ভুক্ত রয়েছে, একটি সন্ধানকে সমর্থন করতে পারে এবং বুট করার জন্য কাঙ্ক্ষিত ক্রমে সারিগুলি প্রদান করে।
সুতরাং এটি প্রায়শই পুনর্বার পরামর্শের টুকরো তবে বেশিরভাগ ক্ষেত্রে এটি অন্যান্য প্রশ্নের সম্ভাব্য উপকার সম্পর্কে তাত্পর্যপূর্ণ - এবং এটি আসলে আপনার কাজের বোঝার দিকে তাকানোর কোনও বিকল্প নয় ।