ক্লাস্টারযুক্ত সূচী কলামগুলি নন-ক্লাস্টারড ইনডেক্সগুলিতে অন্তর্ভুক্ত করা প্রয়োজনীয়?


15

একটি ক্লাস্টারযুক্ত সূচক ক্লাস্টারড সূচকের উপর ভিত্তি করে বিবেচনা করে, নন-ক্লাস্টারড ইনডেক্সের জন্য কি ক্লাস্টারড ইনডেক্সে থাকা কোনও কলামের তালিকা তৈরি করা প্রয়োজন?

অন্য কথায়, যদি প্রোডাক্টস টেবিলে প্রোডাক্টআইডি-তে একটি ক্লাস্টারড ইনডেক্স থাকে, যখন একটি ক্লাস্টারবিহীন সূচী তৈরি করার সময় যেখানে প্রোডাক্টআইডি কলামটি অন্তর্ভুক্ত করার পরামর্শ দেওয়া হবে, তা কি তবে এটি কলাম হিসাবে যুক্ত করা দরকার?

যদি তা না হয় তবে এমন পরিস্থিতি রয়েছে যেখানে ক্লাস্টারবিহীন সূচকে কলামের নাম যুক্ত করা ভাল হবে?

উত্তর:


20

এসকিউএল সার্ভারে ক্লাস্টারড ইনডেক্স কী কলাম (গুলি) সর্বদা নন ক্লাস্টারড ইনডেক্সে সারি লোকেটার হিসাবে কাজ করতে যুক্ত করা হয় (রেফ: নন ক্ল্লাস্টারড ইনডেক্স কী সম্পর্কে আরও )।

কোনও এনসিআই অনন্য হিসাবে ঘোষিত হওয়ার জন্য এগুলিকে একটি অন্তর্ভুক্ত কলাম হিসাবে যুক্ত করা হয় অন্যথায় তারা কীটির শেষে যুক্ত করা হয়।

যদি আপনার প্রশ্নের জন্য ডিফল্ট স্থান নির্ধারণ সর্বোত্তম না হয় তবে আপনি স্পষ্টভাবে কলামগুলি যুক্ত করতে চাইতে পারেন। উদাহরণস্বরূপ আপনি যদি ASC/ DESCদিকটি নিয়ন্ত্রণ করতে চান বা আপনি সূচীতে কী কলামগুলির অবস্থান নিয়ন্ত্রণ করতে চান।

CREATE TABLE T
(
A INT,
B INT,
C INT ,
PRIMARY KEY CLUSTERED (B DESC, C DESC)
)

/*Implicitly adds B DESC, C DESC to end of key*/
CREATE NONCLUSTERED INDEX ix1 ON T(A ASC) 

/*No sort operation*/
SELECT  *
FROM T
ORDER BY A ASC,B DESC, C DESC

/*
But the avove index won't be able to seek into A,C  
and will need a residual predicate after seeking into A.

For the following query
*/

SELECT  *
FROM T
WHERE A=1 AND C > 4
ORDER BY C ASC, B DESC

/*This index explicitly controlling the key column position 
  and direction would be better*/
CREATE NONCLUSTERED INDEX ix2 ON T(A ASC, C ASC, B DESC) 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.