আমার লগ এবং লগ আইটেম টেবিল রয়েছে; আমি উভয় থেকে কিছু তথ্য দখল করার জন্য একটি কোয়েরি লিখছি। এখানে হাজার হাজার রয়েছে Logs
এবং প্রত্যেকের Log
125 টি পর্যন্ত থাকতে পারেLogItems
প্রশ্নের ক্যোয়ারী জটিল তাই আমি এড়িয়ে যাচ্ছি (যদি কেউ মনে করেন এটি গুরুত্বপূর্ণ হয় তবে আমি সম্ভবত এটি পোস্ট করতে পারি), তবে যখন আমি এসএসএমএসের আনুমানিক ক্যোয়ারী প্ল্যান চালিয়েছিলাম তখন এটি আমাকে জানিয়েছিল যে একটি নতুন নন-ক্লাস্টারড ইনডেক্স 100% পর্যন্ত কার্যকারিতা উন্নত করবে ।
Existing Index: Non-clustered
Key Colums (LogItem): ParentLogID, DateModified, Name, DatabaseModified
Query Plan Recommendation
CREATE NONCLUSTERED INDEX [LogReportIndex]
ON [dbo].[LogItem] ([ParentLogID],[DatabaseModified])
কেবল মজাদার জন্য, আমি এই নতুন সূচকটি তৈরি করেছি এবং ক্যোয়ারীটি চালিয়েছি এবং আমার অবাক করে দিয়েছি, আমার ক্যোয়ারীটি চালাতে এখন 1 ডলার সময় লাগে, যখন এটি 10+ সেকেন্ডের আগে ছিল।
আমি ধরে নিয়েছি যে আমার বিদ্যমান সূচকটি এই নতুন ক্যোয়ারীটি কভার করবে, সুতরাং আমার প্রশ্নটি হল কেন আমার নতুন ক্যোয়ারীতে ব্যবহৃত একমাত্র কলামগুলিতে একটি নতুন সূচক তৈরি করা পারফরম্যান্সকে উন্নত করেছে? আমার where
ধারাগুলিতে ব্যবহৃত প্রতিটি কলামের অনন্য সংমিশ্রণের জন্য আমার একটি সূচক থাকা উচিত ?
দ্রষ্টব্য: এসকিউএল সার্ভারটি আমার ফলাফলগুলি ক্যাশে করছে বলে আমি মনে করি না, সূচিটি তৈরি করার আগে আমি প্রায় 25-30 বার প্রশ্নটি চালিয়েছিলাম এবং সূচির পরে এটি 10-15 সেকেন্ড সময় নেয়, এখন সূচি অনুসারে এটি 1 ডলার is বা কম.