কেন IS নাল মান ফিল্টার সূচক ব্যবহার করা হয় না?


18

ধরা যাক আমাদের এইরকম একটি সারণী সংজ্ঞা রয়েছে:

CREATE TABLE MyTab (
    ID INT IDENTITY(1,1) CONSTRAINT PK_MyTab_ID PRIMARY KEY
    ,GroupByColumn NVARCHAR(10) NOT NULL
    ,WhereColumn DATETIME NULL
    )

এবং একটি ফিল্টারবিহীন ক্লাস্টারযুক্ত সূচক:

CREATE NONCLUSTERED INDEX IX_MyTab_GroupByColumn ON MyTab 
    (GroupByColumn)
WHERE (WhereColumn IS NULL) 

কেন এই সূত্রটি এই প্রশ্নের জন্য "আচ্ছাদন" করছে না:

SELECT 
    GroupByColumn
    ,COUNT(*)
FROM MyTab
WHERE WhereColumn IS NULL
GROUP BY GroupByColumn

আমি এই কার্যকর করার পরিকল্পনা পাচ্ছি:

এখানে চিত্র বর্ণনা লিখুন

কীলুকআপটি হ'ল কলামটি নালীর পূর্বাভাসের জন্য।

এখানে পরিকল্পনাটি রয়েছে: https://www.brentozar.com/pastetheplan/?id=SJcbLHxO7

উত্তর:


23

কেন এই সূত্রটি এই প্রশ্নের জন্য "আচ্ছাদন" করছে না:

কোন ভাল কারণ। এটি সেই প্রশ্নের জন্য একটি আচ্ছাদন সূচক।

দয়া করে এখানে ফিবিব্যাক আইটেমটির জন্য ভোট দিন: https://feedback.azure.com/forums/908035-sql-server/suggestions/32896348-filtered-index-not-used-when-is-null-and-key-looku

এবং একটি কাজের হিসাবে WhereColumnফিল্টার সূচক অন্তর্ভুক্ত :

CREATE NONCLUSTERED INDEX IX_MyTab_GroupByColumn 
ON MyTab (GroupByColumn) include (WhereColumn)
WHERE (WhereColumn IS NULL) 

13
এটি এক দশক আগে গাইল শ রিপোর্ট করেছিলেন। তারপরে কানেক্ট মারা গেল। নিকটতম আমি এখন খুঁজে পেতে পারি প্রতিক্রিয়া.azure.com/forums/908035-sql-server/suggestions/…
পল হোয়াইট 9

3

কয়েক সপ্তাহ আগে কিছু পরীক্ষা করার সময় আমার একই সমস্যাটি মনে হয়েছিল। আমার কাছে একটি প্রাথমিক প্রিকিকেটের সাথে একটি জিজ্ঞাসা রয়েছে যার ফলস্বরূপ প্রত্যাবর্তিত ফলাফলগুলির একটি এনএলএল ক্লোসেটটাইম থাকা দরকার এবং আমি ফিল্টার সূচকটি ব্যবহারের কথা ভেবেছিলাম যেহেতু 2 এম + রেকর্ডের 25 কে নুয়াল হয় এবং খুব শীঘ্রই এই চিত্রটি হ্রাস পাবে।

ফিল্টারড সূচকটি ব্যবহার করা হয়নি - আমি 'অ-স্বাতন্ত্র্য' বা সাধারণতার কারণে ধরে নিয়েছি - যতক্ষণ না আমি মাইক্রোসফ্ট সমর্থন নিবন্ধটি পেয়েছি যে বলে:

এই সমস্যাটি সমাধান করার জন্য, প্রত্যাবর্তিত কলামগুলিতে কলামটি নুল হিসাবে পরীক্ষা করা হবে include অথবা, সূচীতে কলামগুলি অন্তর্ভুক্ত করে এই কলামটি যুক্ত করুন।

সুতরাং সূচকে কলামটি যুক্ত করা (বা অন্তর্ভুক্ত) মনে হচ্ছে এটি অফিসিয়াল এমএস প্রতিক্রিয়া।


1
এটি কখনই (এবং যদি) তারা এটি ঠিক না করে ততক্ষণ এটি কার্যকর work
ypercubeᵀᴹ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.