ฉันกำลังทดสอบสถาปัตยกรรมที่แตกต่างกันสำหรับตารางขนาดใหญ่และข้อเสนอแนะอย่างหนึ่งที่ฉันเห็นคือใช้มุมมองที่แบ่งพาร์ติชันโดยที่ตารางขนาดใหญ่จะแบ่งออกเป็นชุดที่มีขนาดเล็กลง
ในการทดสอบวิธีการนี้ฉันได้ค้นพบบางสิ่งที่ไม่สมเหตุสมผลสำหรับฉัน เมื่อฉันกรอง "การแบ่งคอลัมน์" ในมุมมองข้อเท็จจริงเครื่องมือเพิ่มประสิทธิภาพจะค้นหาเฉพาะในตารางที่เกี่ยวข้องเท่านั้น นอกจากนี้หากฉันกรองคอลัมน์นั้นบนตารางมิติเครื่องมือเพิ่มประสิทธิภาพจะกำจัดตารางที่ไม่จำเป็น
อย่างไรก็ตามถ้าฉันกรองส่วนอื่น ๆ ของมิติตัวเพิ่มประสิทธิภาพจะค้นหา 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 Sentry Plan Explorer
ฉันกำลังทำการแบ่งพาร์ติชันตารางที่ใหญ่กว่าจริง ๆ เพื่อดูว่าฉันได้รับการแบ่งพาร์ติชันเพื่อตอบสนองในลักษณะเดียวกันหรือไม่
ฉันจะได้รับการกำจัดพาร์ทิชันสำหรับแบบสอบถาม (ง่าย) ที่กรองในด้านของมิติ
ในระหว่างนี้นี่เป็นสำเนาของฐานข้อมูลเท่านั้น:
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
ตาราง ฉันไม่ได้รับแผนเดียวกับ Paul แม้แต่กับ 4199 และฉันคิดว่านี่เป็นเหตุผล
ObservationDates
ที่จะสร้างสถิติเกี่ยวกับ ฉันลงเอยUPDATE STATISTICS ObservationDates WITH ROWCOUNT = 10000
ด้วยตนเองเพื่อให้ได้แผนที่ Paul แสดงให้เห็น
ObservationDates
ดังนั้นฉันไม่แน่ใจว่าเกิดอะไรขึ้น นอกจากนี้ฉันไม่สามารถสร้างแผนพอลได้เช่นกัน ฉันจะลองอัปเดตเพื่อดู
CREATE STATISTICS [_WA_Sys_00000008_2FCF1A8A] ON [dbo].[Observation_2010]([StationStateCode]) WITH STATS_STREAM = 0x01000000010000000000000000000000D4531EDB00000000D5080000000000009508000000000000AF030000AF000000020000000000000008D000340000000007000000E65DE0007DA5000076F9780000000000867704000000000000000000ABAAAA3C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000