সামগ্রিক অপারেটর কেন অনন্য সূচক স্ক্যানের পরে ব্যবহৃত হয়


15

অ-মূল্যহীন মানগুলির জন্য ফিল্টার করা অনন্য সূচক সহ আমার একটি টেবিল রয়েছে। ক্যোয়ারী পরিকল্পনায় স্বতন্ত্র ব্যবহার রয়েছে। এরজন্য কি কোন কারণ আছে?

USE tempdb

CREATE TABLE T1( Id INT NOT NULL  IDENTITY PRIMARY KEY ,F1 INT , F2 INT )
go
CREATE UNIQUE NONCLUSTERED INDEX UK_T1 ON T1 (F1,F2) WHERE F1 IS NOT NULL AND F2 IS NOT NULL 
GO
INSERT INTO  T1(f1,F2) VALUES(1,1),(1,2),(2,1)

SELECT DISTINCT   F1,F2 FROM T1 WHERE F1 IS NOT NULL AND F2 IS NOT NULL 
SELECT  F1,F2 FROM T1 WHERE F1 IS NOT NULL AND F2 IS NOT NULL  

ক্যোয়ারী পরিকল্পনা: এখানে চিত্র বর্ণনা লিখুন

উত্তর:


15

এটি একটি পরিচিত এসকিউএল সার্ভার কোয়েরি অপ্টিমাইজার সীমাবদ্ধতা। এটি মাইক্রোসফ্টকে জানানো হয়েছে, তবে সংযুক্ত আইটেমটি (আর উপলভ্য নয়) বন্ধ হবে উইন্ট ফিক্স।

এই সীমাবদ্ধতার অতিরিক্ত পরিণতি রয়েছে, ফিল্টার সূচকগুলির সাথে অপ্টিমাইজার সীমাবদ্ধতায় আমি লিখেছিলাম এমন কিছুগুলি সহ , সারাংশ নীচে উদ্ধৃত করা হয়েছে:

এই পোস্টটি ফিল্টার সূচকগুলির সাথে দুটি গুরুত্বপূর্ণ অপ্টিমাইজার সীমাবদ্ধতা হাইলাইট করেছে:

  • অপ্রয়োজনীয় যোগদানের পূর্বাভাসগুলি ফিল্টারড সূচকগুলি মেলানোর জন্য প্রয়োজনীয় হতে পারে
  • ফিল্টার করা অনন্য সূচকগুলি অপ্টিমাইজারকে স্বতন্ত্রতার তথ্য সরবরাহ করে না

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.