আমি বড় টেবিলগুলির জন্য বিভিন্ন আর্কিটেকচার পরীক্ষা করছি এবং একটি পরামর্শ যা আমি দেখেছি তা হল পার্টিশনযুক্ত ভিউ ব্যবহার করা, যার মাধ্যমে একটি বৃহত টেবিলটি ছোট ছোট "পার্টিশনযুক্ত" টেবিলগুলিতে বিভক্ত হয়।
এই পদ্ধতির পরীক্ষার সময়, আমি এমন কিছু আবিষ্কার করেছি যা আমার কাছে পুরোটা বোঝায় না। আমি যখন ফ্যাক্ট ভিউতে "পার্টিশন কলাম" ফিল্টার করি, তখন অপটিমাইজার কেবলমাত্র প্রাসঙ্গিক টেবিলগুলিতে সন্ধান করে। তদ্ব্যতীত, আমি যদি সেই কলামটিতে মাত্রার টেবিলটিতে ফিল্টার করি তবে অপটিমাইজার অপ্রয়োজনীয় টেবিলগুলি সরিয়ে দেয়।
তবে আমি যদি মাত্রাটির অন্য কোনও দিকগুলিতে ফিল্টার করি তবে প্রতিটি বেস টেবিলের পিকে / সিআইতে অপ্টিমাইজার সন্ধান করে।
এখানে প্রশ্নযুক্ত প্রশ্নগুলি এখানে:
select
od.[Year],
AvgValue = avg(ObservationValue)
from dbo.v_Observation o
join dbo.ObservationDates od
on o.ObservationDateKey = od.DateKey
where o.ObservationDateKey >= 20000101
and o.ObservationDateKey <= 20051231
group by od.[Year];
select
od.[Year],
AvgValue = avg(ObservationValue)
from dbo.v_Observation o
join dbo.ObservationDates od
on o.ObservationDateKey = od.DateKey
where od.DateKey >= 20000101
and od.DateKey <= 20051231
group by od.[Year];
select
od.[Year],
AvgValue = avg(ObservationValue)
from dbo.v_Observation o
join dbo.ObservationDates od
on o.ObservationDateKey = od.DateKey
where od.[Year] >= 2000 and od.[Year] < 2006
group by od.[Year];
এসকিউএল সেন্ট্রি প্ল্যান এক্সপ্লোরার সেশনের একটি লিঙ্ক এখানে ।
আমি অনুরূপ ফ্যাশনটিতে প্রতিক্রিয়া জানাতে পার্টিশন নির্মূলতা পাই কিনা তা দেখার জন্য আমি বৃহত্তর টেবিলটি বাস্তবে বিভাজনে কাজ করছি।
আমি (সরল) ক্যোয়ারির জন্য পার্টিশন নির্মূলকরণ পাই যা মাত্রার দিকটি ফিল্টার করে।
ইতিমধ্যে, এখানে ডাটাবেসের একটি পরিসংখ্যান-কেবল অনুলিপি রয়েছে:
https://gist.github.com/swasheck/9a22bf8a580995d3b2aa
"পুরাতন" কার্ডিনালিটির অনুমানকারী কম ব্যয়বহুল পরিকল্পনা পেয়েছে তবে এটি প্রতিটি (অপ্রয়োজনীয়) সূচকের সন্ধানে কার্ডিনালিটির কম অনুমানের কারণে।
মাত্রাটির অন্য কোনও দিক দিয়ে ফিল্টার করার সময় কী কলামটি ব্যবহার করার জন্য অপ্টিমাইজার পাওয়ার কোনও উপায় আছে কিনা তা আমি জানতে চাই যাতে এটি অপ্রাসঙ্গিক টেবিলগুলিতে সন্ধানগুলি দূর করতে পারে।
এসকিউএল সার্ভার সংস্করণ:
Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Feb 20 2014 20:04:26
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
ObservationDates
টেবিলের কোনও পরিসংখ্যান নেই । আমি পলের মতো একই পরিকল্পনাটি পাচ্ছি না, এমনকি 4199 দিয়েও, এবং আমার মনে হয় এই কারণেই।
ObservationDates
। UPDATE STATISTICS ObservationDates WITH ROWCOUNT = 10000
পল যে পরিকল্পনাটি দেখিয়েছিল তা পাওয়ার জন্য আমি ম্যানুয়ালি দৌড়ে এসেছি ।
ObservationDates
সুতরাং আমি নিশ্চিত নই যে এর সাথে কী চলছে। এছাড়াও, আমি প্ল্যানটি পলও উত্পন্ন করতে সক্ষম নই। আমি আপডেট দেখতে চেষ্টা করব।
CREATE STATISTICS [_WA_Sys_00000008_2FCF1A8A] ON [dbo].[Observation_2010]([StationStateCode]) WITH STATS_STREAM = 0x01000000010000000000000000000000D4531EDB00000000D5080000000000009508000000000000AF030000AF000000020000000000000008D000340000000007000000E65DE0007DA5000076F9780000000000867704000000000000000000ABAAAA3C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000