diff --git a/querier.go b/querier.go index a0276b230..97970e830 100644 --- a/querier.go +++ b/querier.go @@ -413,12 +413,15 @@ func (s *populatedChunkSeries) Next() bool { for s.set.Next() { lset, chks := s.set.At() - from := -1 - for i, c := range chks { - if c.MaxTime < s.mint { - from = i - continue + for len(chks) > 0 { + if chks[0].MaxTime >= s.mint { + break } + chks = chks[1:] + } + + // Break out at the first chunk that has no overlap with mint, maxt. + for i, c := range chks { if c.MinTime > s.maxt { chks = chks[:i] break @@ -429,7 +432,6 @@ func (s *populatedChunkSeries) Next() bool { } } - chks = chks[from+1:] if len(chks) == 0 { continue }