आप इस डेटा आप एक अनुक्रमित दृश्य विचार करना चाह सकते के लिए एक उच्च पढ़ें/लिखें अनुपात करने जा रहे हैं। मैंने समय के बाल्टी से कुल मिलाकर इस दृष्टिकोण का उपयोग किया है।
create table timeSeries (
timeSeriesId int identity primary key clustered
,updateDate datetime not null
,payload float not null
)
insert timeSeries values ('2009-06-16 12:00:00', rand())
insert timeSeries values ('2009-06-16 12:00:59', rand())
insert timeSeries values ('2009-06-16 12:01:00', rand())
insert timeSeries values ('2009-06-16 12:59:00', rand())
insert timeSeries values ('2009-06-16 01:00:00', rand())
insert timeSeries values ('2009-06-16 1:30:00', rand())
insert timeSeries values ('2009-06-16 23:59:00', rand())
insert timeSeries values ('2009-06-17 00:01:00', rand())
insert timeSeries values ('2009-06-17 00:01:30', rand())
create view timeSeriesByMinute_IV with schemabinding as
select
dayBucket = datediff(day, 0, updateDate)
,minuteBucket = datediff(minute, 0, (updateDate - datediff(day, 0, updateDate)))
,payloadSum = sum(payLoad)
,numRows = count_big(*)
from dbo.timeSeries
group by
datediff(day, 0, updateDate)
,datediff(minute, 0, (updateDate - datediff(day, 0, updateDate)))
go
create unique clustered index CU_timeSeriesByMinute_IV on timeSeriesByMinute_IV (dayBucket, minuteBucket)
go
create view timeSeriesByMinute as
select
dayBucket
,minuteBucket
,payloadSum
,numRows
,payloadAvg = payloadSum/numRows
from dbo.timeSeriesByMinute_IV with (noexpand)
go
declare @timeLookup datetime, @dayBucket int, @minuteBucket int
select
@timeLookup = '2009-06-16 12:00:00'
,@dayBucket = datediff(day, 0, @timeLookup)
,@minuteBucket = datediff(minute, 0, (@timeLookup - datediff(day, 0, @timeLookup)))
select * from timeSeriesByMinute where dayBucket = @dayBucket and minuteBucket = @minuteBucket
आप कोड ब्लॉक के अंत में उदाहरण देखने को देख सकते हैं: मैं बस blogging the example के लिए चारों ओर हो गया है, यहाँ कोड है। स्पष्ट रूप से आप केवल एक विशेष दिन की तलाश करने के बजाय सीमाओं को क्वेरी में परिभाषित कर सकते हैं बाल्टी/मिनट बाल्टी जोड़ी।
+1 अच्छा क्वेरी और आसान – Andomar
को पढ़ने के लिए यह एक का इलाज धन्यवाद काम करता है! – Lloyd