मैं बड़ी तालिकाओं के लिए अलग-अलग आर्किटेक्चर का परीक्षण कर रहा हूं और एक सुझाव जो मैंने देखा है वह एक विभाजन दृश्य का उपयोग करना है, जिससे एक बड़ी तालिका छोटे, "विभाजन" तालिकाओं की एक श्रृंखला में टूट गई है।
इस दृष्टिकोण के परीक्षण में, मैंने कुछ ऐसा खोजा है जो मेरे लिए बहुत मायने नहीं रखता है। जब मैं फैक्ट व्यू पर "पार्टीशनिंग कॉलम" को फ़िल्टर करता हूं, तो ऑप्टिमाइज़र केवल संबंधित टेबलों पर तलाश करता है। इसके अतिरिक्त, यदि मैं आयाम तालिका पर उस कॉलम को फ़िल्टर करता हूं, तो ऑप्टिमाइज़र अनावश्यक तालिकाओं को समाप्त कर देता है।
हालाँकि, यदि मैं आयाम के कुछ अन्य पहलू पर फ़िल्टर करता हूँ, तो आशावादी प्रत्येक बेस टेबल के PK / CI पर चाहता है।
यहाँ प्रश्न में प्रश्न हैं:
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];
यहां SQL संतरी योजना एक्सप्लोरर सत्र का लिंक दिया गया है।
मैं वास्तव में बड़ी तालिका को विभाजित करने के लिए काम कर रहा हूं यह देखने के लिए कि क्या मुझे इसी तरह से जवाब देने के लिए विभाजन उन्मूलन मिलता है।
मुझे उस सरल (सरल) क्वेरी के लिए विभाजन उन्मूलन मिलता है जो आयाम के एक पहलू पर फ़िल्टर करता है।
इस बीच, यहाँ डेटाबेस की केवल एक प्रति है:
https://gist.github.com/swasheck/9a22bf8a580995d3b2aa
"पुराने" कार्डिनैलिटी अनुमानक को कम खर्चीली योजना मिलती है, लेकिन ऐसा इसलिए है क्योंकि (अनावश्यक) इंडेक्स में से प्रत्येक पर कार्डिनैलिटी का अनुमान कम है।
मैं जानना चाहता हूं कि क्या आयाम के किसी अन्य पहलू को फ़िल्टर करते समय कुंजी स्तंभ का उपयोग करने के लिए ऑप्टिमाइज़र प्राप्त करने का एक तरीका है ताकि यह अप्रासंगिक तालिकाओं पर खोज को समाप्त कर सके।
SQL सर्वर संस्करण:
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