সংক্ষেপে
কোন কারণগুলিতে তারা সূচকযুক্ত দর্শনের সূচকটি অপ্টিমাইজারের নির্বাচনের প্রশ্ন জিজ্ঞাসা করে?
আমার জন্য, সূচকযুক্ত দর্শনগুলি অপ্টিমাইজার কীভাবে সূচকগুলি তুলবে সে সম্পর্কে আমি যা বুঝি তা অস্বীকার করে বলে মনে হচ্ছে। আমি এর আগে জিজ্ঞাসা করেছি , কিন্তু ওপি খুব ভাল গ্রহণ করা হয়নি। আমি সত্যিই গাইডপোস্টগুলি খুঁজছি , তবে আমি একটি ছদ্ম উদাহরণটি উপস্থাপন করব, তারপরে প্রচুর ডিডিএল, আউটপুট, উদাহরণ সহ প্রকৃত উদাহরণ পোস্ট করব।
ধরুন আমি এন্টারপ্রাইজ 2008+ ব্যবহার করছি, বুঝুন
with(noexpand)
সিউডোর উদাহরণ
এই ছদ্ম উদাহরণটি ধরুন: আমি 22 টি যোগ দিয়ে, 17 টি ফিল্টার এবং একটি সার্কাসের পনি দিয়ে একটি ভিউ তৈরি করি যা 10 মিলিয়ন সারি টেবিলগুলির একগুচ্ছকে অতিক্রম করে। এই দৃশ্যটি ব্যয়বহুল (হ্যাঁ, মূলধন ই সহ) ize আমি স্কেমেবাইন্ড করব এবং ভিউটি সূচক করব। তারপরে ক SELECT a,b FROM AnIndexedView WHERE theClusterKeyField < 84
। অপ্টিমাইজার যুক্তিতে যা আমাকে অন্তর্ভুক্ত করে অন্তর্নিহিত যোগদানগুলি সম্পাদন করে।
ফলাফল:
- কোনও ইঙ্গিত নেই: 4825 720 সারি, 76 মিমির উপরে 47 সিপিইউ এবং 0.30523 এর আনুমানিক উপ-গাছের দাম পড়বে।
- ইঙ্গিত সহ: 17 টি পড়ছে, 720 টি সারি, 4 এসএমের চেয়ে 15 টি সিপিইউ, এবং আনুমানিক সাবট্রি ব্যয় 0.007253
তাহলে এখানে কি হচ্ছে? আমি এটি এন্টারপ্রাইজ 2008, 2008-আর 2 এবং 2012 এ চেষ্টা করেছি every প্রতিটি মেট্রিকের মাধ্যমে আমি ভিউয়ের সূচকটি ব্যবহার করা আরও বেশি দক্ষ বলে মনে করতে পারি। আমার কাছে প্যারামিটার স্নিফিং ইস্যু বা স্কিউ ডেটা নেই, কারণ এটি অ্যাড হক h
একটি বাস্তব (দীর্ঘ) উদাহরণ
আপনি যদি কোনও স্পর্শবাদী না হন তবে সম্ভবত আপনার এই অংশটি পড়ার প্রয়োজন নেই বা চান না।
সংস্করণ
হ্যাঁ, এন্টারপ্রাইজ।
মাইক্রোসফ্ট এসকিউএল সার্ভার 2012 - 11.0.2100.60 (X64) ফেব্রুয়ারী 10 2012 19:39:15 কপিরাইট (গ) মাইক্রোসফ্ট কর্পোরেশন এন্টারপ্রাইজ সংস্করণ (-৪-বিট) উইন্ডোজ এনটি 6.2 (বিল্ড 9200:) (হাইপারভাইজার)
দৃশ্য
CREATE VIEW dbo.TimelineMaterialized WITH SCHEMABINDING
AS
SELECT TM.TimelineID,
TM.TimelineTypeID,
TM.EmployeeID,
TM.CreateUTC,
CUL.CultureCode,
CASE
WHEN TM.CustomerMessageID > 0 THEN TM.CustomerMessageID
WHEN TM.CustomerSessionID > 0 THEN TM.CustomerSessionID
WHEN TM.NewItemTagID > 0 THEN TM.NewItemTagID
WHEN TM.OutfitID > 0 THEN TM.OutfitID
WHEN TM.ProductTransactionID > 0 THEN TM.ProductTransactionID
ELSE 0 END As HrefId,
CASE
WHEN TM.CustomerMessageID > 0 THEN IsNull(C.Name, 'N/A')
WHEN TM.CustomerSessionID > 0 THEN IsNull(C.Name, 'N/A')
WHEN TM.NewItemTagID > 0 THEN IsNull(NI.Title, 'N/A')
WHEN TM.OutfitID > 0 THEN IsNull(O.Name, 'N/A')
WHEN TM.ProductTransactionID > 0 THEN IsNull(PT_PL.NameLocalized, 'N/A')
END as HrefText
FROM dbo.Timeline TM
INNER JOIN dbo.CustomerSession CS ON TM.CustomerSessionID = CS.CustomerSessionID
INNER JOIN dbo.CustomerMessage CM ON TM.CustomerMessageID = CM.CustomerMessageID
INNER JOIN dbo.Outfit O ON PO.OutfitID = O.OutfitID
INNER JOIN dbo.ProductTransaction PT ON TM.ProductTransactionID = PT.ProductTransactionID
INNER JOIN dbo.Product PT_P ON PT.ProductID = PT_P.ProductID
INNER JOIN dbo.ProductLang PT_PL ON PT_P.ProductID = PT_PL.ProductID
INNER JOIN dbo.Culture CUL ON PT_PL.CultureID = CUL.CultureID
INNER JOIN dbo.NewsItemTag NIT ON TM.NewsItemTagID = NIT.NewsItemTagID
INNER JOIN dbo.NewsItem NI ON NIT.NewsItemID = NI.NewsItemID
INNER JOIN dbo.Customer C ON C.CustomerID = CASE
WHEN TM.TimelineTypeID = 1 THEN CM.CustomerID
WHEN TM.TimelineTypeID = 5 THEN CS.CustomerID
ELSE 0 END
WHERE CUL.IsActive = 1
ক্লাস্টার্ড সূচক
CREATE UNIQUE CLUSTERED INDEX PK_TimelineMaterialized ON
TimelineMaterialized (EmployeeID, CreateUTC, CultureCode, TimelineID)
এসকিউএল পরীক্ষা করুন
-- NO HINT - - - - - - - - - - - - - - -
SELECT * --yes yes, star is bad ...just a test example
FROM TimelineMaterialized TM
WHERE
TM.EmployeeID = 2
AND TM.CultureCode = 'en-US'
AND TM.CreateUTC > '9/10/2012'
AND TM.CreateUTC < '9/11/2012'
-- WITH HINT - - - - - - - - - - - - - - -
SELECT *
FROM TimelineMaterialized TM with(noexpand)
WHERE
TM.EmployeeID = 2
AND TM.CultureCode = 'en-US'
AND TM.CreateUTC > '9/10/2012'
AND TM.CreateUTC < '9/11/2012'
ফলাফল = আউটপুট 11 টি সারি
প্রোফাইলার আউটপুট
শীর্ষ 4 লাইন কোনও ইঙ্গিত ছাড়াই রয়েছে। নীচের 4 টি লাইনগুলি ইঙ্গিতটি ব্যবহার করছে।
এক্সিকিউশন কামাল
SQLPlan বিন্যাসে উভয় এক্সেকিউশন পরিকল্পনা জন্য GitHub সারকথা
কোনও হিন্ট এক্সিকিউশন পরিকল্পনা নেই - ক্লাস্টারড ইনডেক্সটি কেন আপনি মিঃ এসকিউএলকে দিয়েছি না? এটি 3 ফিল্টার ক্ষেত্রগুলিতে ক্লাস্টারড। এটি ব্যবহার করে দেখুন, আপনি এটা পছন্দ করতে পারেন।
একটি ইঙ্গিত ব্যবহার করার সময় সহজ পরিকল্পনা।