উত্তর:
আমার শুরু থেকেই ঠিক সূচি শুরু করা উচিত বা যখন পারফরম্যান্সের সমস্যা দেখা দেয়?
ব্যবহারের ধরণগুলি প্রকাশের সাথে সাথে সূচকের কৌশলটি বিকশিত হয়। এটি বলেছিল, এমন কৌশল এবং নকশার নির্দেশিকাও রয়েছে যা সামনে প্রয়োগ করা যেতে পারে।
একটি ভাল ক্লাস্টারিং চাবি চয়ন করুন । আপনি সাধারণত কোনও টেবিলের সন্নিবেশগুলির প্রত্যাশিত প্যাটার্নের ভিত্তিতে নকশার সময় উপযুক্ত ক্লাস্টারড সূচকটি নির্ধারণ করতে পারেন। ভবিষ্যতে কোনও পরিবর্তনের জন্য যদি কোন বাধ্যতামূলক কেস উদ্ভূত হয় তবে তা হয়ে উঠুন।
আপনার প্রাথমিক এবং অন্যান্য অনন্য সীমাবদ্ধতা তৈরি করুন । এগুলি অনন্য সূচী দ্বারা প্রয়োগ করা হবে।
আপনার বিদেশী কী এবং সম্পর্কিত নন-ক্লাস্টারযুক্ত সূচকগুলি তৈরি করুন । বিদেশী কীগুলি হ'ল আপনার সর্বাধিক ঘন ঘন রেফারেন্সযুক্ত কলামগুলিতে যোগদান করা, তাই শুরু থেকেই এগুলি সূচী করুন।
যে কোনও স্পষ্টতই উচ্চ নির্বাচিত প্রশ্নের জন্য সূচকগুলি তৈরি করুন । ক্যোয়ারী নিদর্শনগুলির জন্য আপনি ইতিমধ্যে জানেন যে উচ্চতর নির্বাচনী এবং স্ক্যানের পরিবর্তে লুকআপ ব্যবহার করার সম্ভাবনা রয়েছে।
উপরের বাইরে, নতুন সূচী বাস্তবায়নের জন্য ধীরে ধীরে ও সামগ্রিক পদ্ধতির গ্রহণ করুন। সামগ্রিকভাবে, আমি সংযোজন মূল্যায়ন করার সময় সমস্ত প্রশ্নের এবং বিদ্যমান সূচকগুলিতে সম্ভাব্য বেনিফিট এবং প্রভাবের মূল্যায়ন বোঝাতে চাইছি।
অনুপস্থিত সূচক ডিএমভি এবং এসএসএমএসের ইঙ্গিতগুলি থেকে গাইডেন্সের ফলে এসকিউএল সার্ভার চেনাশোনাগুলিতে একটি অস্বাভাবিক সমস্যা অতিমাত্রায় নয়। এই সরঞ্জামগুলির কোনওটিই বিদ্যমান সূচকগুলি মূল্যায়ন করে না এবং আনন্দের সাথে পরামর্শ দিবে যে আপনি বিদ্যমান 5 টি কলাম সূচীতে একটি একক কলাম যুক্ত করার পরিবর্তে একটি নতুন 6 কলাম সূচক তৈরি করবেন।
-- If you have this
CREATE NONCLUSTERED INDEX [IX_MyTable_MyIndex] ON [dbo].[MyTable]
(
[col1] ASC
, [col2] ASC
, [col3] ASC
, [col4] ASC
, [col5] ASC
)
-- But your query would benefit from the addition of a column
CREATE NONCLUSTERED INDEX [IX_MyTable_MyIndex] ON [dbo].[MyTable]
(
[col1] ASC
, [col2] ASC
, [col3] ASC
, [col4] ASC
, [col5] ASC
, [col6] ASC
)
-- SSMS will suggest you create this instead
CREATE NONCLUSTERED INDEX [IX_MyTable_AnotherIndexWithTheSameColumnsAsTheExistingIndexPlusCol6] ON [dbo].[MyTable]
(
[col1] ASC
, [col2] ASC
, [col3] ASC
, [col4] ASC
, [col5] ASC
, [col6] ASC
)
কিম্বারলি ট্রিপকে ইনডেক্সিং কৌশল সম্পর্কিত কিছু দুর্দান্ত উপাদান রয়েছে যা এসকিউএল ফোকাস করার সময় অন্যান্য প্ল্যাটফর্মের ক্ষেত্রে প্রযোজ্য। এসকিউএল সার্ভার লোকের জন্য, উপরের উদাহরণের মতো সদৃশ সনাক্তকরণের জন্য কয়েকটি কার্যকর সরঞ্জাম রয়েছে ।
আমরা কোয়েরি চালানোর সময় অস্থায়ী সূচিও তৈরি করতে পারি। এই জাতীয় কৌশলগুলির পক্ষে কি কি?
এটি সাধারণত খুব কমই চালিত ক্যোয়ারির জন্য প্রযোজ্য হয়, সাধারণত ইটিএল। আপনার মূল্যায়ন করা দরকার:
উভয় পদ্ধতির সাথে সত্যই যুক্ত ঝুঁকি রয়েছে:
বিকল্প ক) সূচনাটি সূচনা থেকে, তবে বুঝতে পারছেন না যে আপনি বেশ কয়েকটি সূচক তৈরি করেছেন যা কখনও ব্যবহৃত হয় না। এগুলি কিছু ওভারহেড যুক্ত করে (সর্বাধিক লক্ষণীয় যে ডেটা সংশোধন করে এমন প্রশ্নের ক্ষেত্রে, তবে সেরা সূচকটি সনাক্ত করার চেষ্টা করে SELECT বিবৃতিগুলির অনুকূলিতকরণের সাথে)।
আপনাকে সূচিগুলি আর ব্যবহার করা হচ্ছে না এবং তাদের চেষ্টা করে মুছে ফেলার জন্য নিজেকে শৃঙ্খলাবদ্ধ করতে হবে (পোস্টগ্রিএসকিউএল এটি করতে পারে; দুর্ভাগ্যক্রমে মাইএসকিউএল তুলনা করে বাক্সের বাইরে খুব দুর্বল))
বিকল্প খ) লোকেরা অভিযোগ করা শুরু না করা পর্যন্ত আপনার সূচিগুলি যুক্ত করবেন না বা আপনার ডায়াগনস্টিক সরঞ্জামগুলি ট্রিগার করে যে নির্দিষ্ট অনুসন্ধানগুলি ধীর এবং উন্নত হতে পারে।
আপনি যে ঝুঁকিটি প্রবর্তন করেছেন তা হ'ল আপনার সূচকের দরকার পড়ার সময় এবং কখন এটি যুক্ত করতে হবে তার মধ্যে আপনার পর্যাপ্ত পরিমাণের উইন্ডো নেই।
পোস্টগ্রিএসকিউএল বিল্ডিং ইনডেক্সগুলিকে সমর্থন করে CONCURRENTLY
যা এই হঠাৎ-সূচক-অ্যাড-প্রয়োজনীয়তা থেকে কিছুটা চাপ হ্রাস করে, তবে ম্যানুয়ালটিতে কিছু ক্যাভেট উল্লেখ করা আছে।
বিকল্প (খ) আমার পছন্দ হিসাবে বিবেচনা করে তবে আমি মনে করি উভয় বিকল্পের একটি সংকর সম্ভবত সেরা সমাধান। এটি আপনার আত্মবিশ্বাসের স্তরের সাথে সম্পর্কিত যা আপনি ভাবেন যে কোনও সূচক আসলে ব্যবহৃত হবে কিনা।
এটিকে একটি জটিল আলোচনা করে তোলে এটি হ'ল সাধারণত সূচকগুলি পরিবর্তন করা সহজ তবে স্কিমা পরিবর্তন করা শক্ত। বেপরোয়া হওয়ার অজুহাত হিসাবে আমি খ এর বিলম্বিত প্রতিক্রিয়াটিকে প্রচার করতে চাই না ।
মার্ক এর উত্তর ছাড়াও
প্রত্যাশিত পরিমাণে বাস্তবসম্মত পরীক্ষার ডেটা রেখে আপনি একটি অনুভূতি পেতে পারেন। আমি অনেকগুলি, অনেকগুলি (খুব বেশি) কেস দেখেছি যেখানে 1000 সারি দিয়ে কোনও ক্যোয়ারী ঠিক আছে তবে মিলিয়ন উত্পাদনে নয়।
যদি আপনি পারেন তবে প্রযোজনার অনুলিপি পরে কাজ করুন,
অবশ্যই, আমি কেবল উত্পাদনগুলিতে বিজোড় সমস্যাটি দেখেছি ব্যবহারের ধরণের কারণে যখন অন্য সমস্ত কিছুই অভিন্ন থাকে
অস্থায়ী সূচী? ETL লোড নিদর্শনগুলির বাইরে, যদি একবার তাদের প্রয়োজন হয় তবে তাদের আবার প্রয়োজন হবে। ভুলে যাবেন না: একটি সূচক তৈরি / ড্রপ একটি লিখন এবং লগ হয় = আরও বেশি লোড
কিছু জিনিস যুক্ত করতে।
এটি আমার পদ্ধতির
অবাস্তব কলামগুলির জন্য যেখানে ক্লজ রাখতে > 0
বা > ""
আপনার যেখানে থাকতে ভয় পাবেন না ।
select * from blah
where A="one"
and B="two"
and C>="" --to match index
and D="four"
--This will use your existing index. No need to create a redundant one.
আমি প্রথম প্রশ্নের উত্তর দেওয়ার চেষ্টা করব। যদি আপনি শুরু থেকেই মোটামুটি কিছু সময়ের পরে আপনার টেবিলগুলিতে কতটি রেকর্ড রাখতে পারেন তা অনুমান করতে পারেন, আমি বলার চেয়ে কিছু সূচকের নকশা করা শুরু থেকে শুরু করা ভাল। এমন কিছু পরীক্ষার সরঞ্জাম বা পরীক্ষার স্ক্রিপ্টগুলি ব্যবহার করার চেষ্টা করুন যা অ্যাপ্লিকেশন কলগুলির জন্য যতটা সম্ভব কলগুলি স্বয়ংক্রিয় হয়ে উঠবে যা আপনি মনে করেন যে সর্বাধিক ব্যবহৃত হবে এবং আপনি দেখতে পাবেন কোন টেবিল স্ক্যানগুলি শুরু থেকে এড়ানো যেতে পারে।
এটি শুরুতে অনুমানের কাজ হবে তবে সময় মতো আপনার যথাযথ ব্যবহারের পরিসংখ্যান থাকায় আপনার একটি পরিষ্কার চিত্র হবে।