নির্দিষ্ট মাল্টি কলাম কলাম সূচির পরিবর্তে আমার কি অনেকগুলি একক ক্ষেত্র সূচী ব্যবহার করা উচিত?


35

এই প্রশ্নটি কোনও এসকিউএল সার্ভার সূচক কৌশলটির কার্যকারিতা সম্পর্কে। আমি মনে করি এটি "সূচক ছেদ" হিসাবে পরিচিত।

আমি একটি বিদ্যমান এসকিউএল সার্ভার (২০০৮) অ্যাপ্লিকেশনটির সাথে কাজ করছি যার মধ্যে বেশ কয়েকটি কর্মক্ষমতা এবং স্থায়িত্বের সমস্যা রয়েছে। বিকাশকারীরা ইনডেক্স দিয়ে কিছু বিজোড় কাজ করেছিলেন। আমি এই বিষয়গুলি সম্পর্কে চূড়ান্ত মানদণ্ড পেতে সক্ষম হইনি, বা ইন্টারনেটগুলিতে আমি খুব ভাল কোনও ডকুমেন্টেশন খুঁজে পাই না।

একটি টেবিলে অনেকগুলি অনুসন্ধানযোগ্য কলাম রয়েছে। বিকাশকারীগণ অনুসন্ধানযোগ্য কলামগুলির প্রত্যেকটিতে একটি একক কলাম সূচক তৈরি করেছিলেন। তত্ত্বটি হ'ল এসকিউএল সার্ভার বেশিরভাগ পরিস্থিতিতে দক্ষতার সাথে টেবিলটি অ্যাক্সেস করতে এই সূচকগুলির প্রতিটি সংহত (ছেদ করা) করতে সক্ষম হবে । এখানে একটি সরলীকৃত উদাহরণ দেওয়া হয়েছে (আসল টেবিলের আরও ক্ষেত্র রয়েছে):

CREATE TABLE [dbo].[FatTable](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [col1] [nchar](12) NOT NULL,
    [col2] [int] NOT NULL,
    [col3] [varchar](2000) NOT NULL, ...

CREATE NONCLUSTERED INDEX [IndexCol1] ON [dbo].[FatTable]  ( [col1] ASC )
CREATE NONCLUSTERED INDEX [IndexCol2] ON [dbo].[FatTable] ( [col2] ASC )

select * from fattable where col1 = '2004IN' 
select * from fattable where col1 = '2004IN' and col2 = 4

আমি মনে করি অনুসন্ধানের মানদণ্ডের উদ্দেশ্যে লক্ষ্যযুক্ত একাধিক কলাম সূচী আরও ভাল তবে আমি ভুল হতে পারি। আমি কোয়েরি পরিকল্পনাগুলি দেখেছি যা এসকিউএল সার্ভারকে দেখায় যে দুটি সূচী অনুসন্ধানে হ্যাশ ম্যাচ করছে। টেবিলটি কীভাবে সন্ধান করা হয় তা আপনি জানেন না যখন সম্ভবত এটি বোধগম্য হয়? ধন্যবাদ।


: @brentozar একটা চমৎকার মূল্য একটি ঘড়ি যে ইনডেক্স সম্পর্কে ভিডিও আছে brentozar.com/sql-server-training-videos/...
DForck42

উত্তর:


38

আপনার যা প্রয়োজন তা হ'ল সূচকগুলি covering েকে রাখুন। সূচকগুলি যা নিজেরাই কোনও প্রশ্নের সন্ধান করতে পারে। তবে একটি 'কভারিং' সূচকের একটি সমস্যা রয়েছে: এটি একটি নির্দিষ্ট ক্যোয়ারীটি আবরণ করে । সুতরাং একটি ভাল সূচক কৌশল বিকাশ করার জন্য আপনার কাজের চাপ বোঝা দরকার: ডাটাবেসগুলিতে কোন প্রশ্নগুলি হিট করছে, কোনটি সমালোচনামূলক এবং কোনগুলি নয়, প্রতিটি ধরণের ক্যোয়ারী কতবার চালানো হয় ইত্যাদি ইত্যাদি And এবং তারপরে আপনি প্রতিটি সূচকের লিখন এবং আপডেট ব্যয়ের তুলনায় এটিকে ভারসাম্য করুন এবং সেখানে আপনার ইনডেক্স কৌশল রয়েছে। যে যদি জটিল শব্দ কারণ এটি হয় জটিল।

তবে আপনি থাম্বের কিছু নিয়ম প্রয়োগ করতে পারেন। এমএসডিএন বেসিকগুলি বেশ ভালভাবে কভার করে:

এছাড়াও সম্প্রদায়ের দ্বারা অবদান করা অসংখ্য নিবন্ধ রয়েছে। ওয়েবকাস্ট রেকর্ডিং - ডিবিএ ডারউইন পুরষ্কার: সূচক সংস্করণ

এবং আপনার প্রশ্নের সুনির্দিষ্টভাবে উত্তর দিতে: প্রতিটি কলামে পৃথক সূচীগুলি কাজ করতে পারে , তবে প্রতিটি কলামের একটি উচ্চতর নির্বাচন রয়েছে (অনেক স্বতন্ত্র মান, প্রতিটি মান ডাটাবেসে কেবল কয়েকবার প্রদর্শিত হয়)। দুটি সূচী রেঞ্জের স্ক্যানগুলির মধ্যে হ্যাশ জোড় ব্যবহার করে ফলাফল অ্যাক্সেস পরিকল্পনা সাধারণত বেশ ভাল কাজ করে। স্বল্প নির্বাচনের সাথে কলামগুলি (কয়েকটি স্বতন্ত্র মান, প্রতিটি মান ডাটাবেসে অনেকবার উপস্থিত হয়) তাদের নিজের অনুসারে সূচিযুক্ত করার কোনও অর্থ হয় না, ক্যোয়ারী অপ্টিমাইজার কেবল এগুলি উপেক্ষা করবে। যাইহোক, কম নির্বাচনযোগ্য কলামগুলি উচ্চতর নির্বাচনী কলামের সাথে যুক্ত হয়ে গেলে অনেক সময় ভাল সংমিশ্রিত কী তৈরি করে ।


ধন্যবাদ রেমাস আমি পৃথক সূচকগুলি ব্যবহার করে লক্ষ্যবস্তু বহু কলাম ইনডেক্স (এবং অন্তর্ভুক্ত) তৈরি করার তুলনামূলক সুবিধা সম্পর্কে ভাবছি। যদি এটি "বেশ ভালভাবে কাজ করে" যথেষ্ট ভাল হয় তবে এটি ঠিক আছে। (নিম্ন-নির্বাচনী ক্ষেত্রগুলিতে সূচিগুলি ছুঁড়ে ফেলবে)। যখন আমাদের উত্পাদন ডেটাবেজে অ্যাক্সেস না থাকে এবং আমাদের সূচিগুলিকে প্রকৃত ব্যবহারের দিকে লক্ষ্য রাখতে না পারে তখন এই কৌশলটি সাহায্য করবে।
রাউলরুবিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.