app/vmselect/prometheus: do not add __name__!= filter when searching for all the matching metric names via /api/v1/label/__name__/values with non-empty label filter

This should reduce query time.
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/343
This commit is contained in:
Aliaksandr Valialkin 2020-02-28 23:35:47 +02:00
parent 43754ff420
commit 7d178a40bd

View file

@ -283,16 +283,18 @@ func labelValuesWithMatches(labelName string, matches []string, start, end int64
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Add `labelName!=''` tag filter in order to filter out series without the labelName. // Add `labelName!=''` tag filter in order to filter out series without the labelName.
key := []byte(labelName) // There is no need in adding `__name__!=''` filter, since all the time series should
if string(key) == "__name__" { // already have non-empty name.
key = nil if labelName != "__name__" {
} key := []byte(labelName)
for i, tfs := range tagFilterss { for i, tfs := range tagFilterss {
tagFilterss[i] = append(tfs, storage.TagFilter{ tagFilterss[i] = append(tfs, storage.TagFilter{
Key: key, Key: key,
IsNegative: true, IsNegative: true,
}) })
}
} }
if start >= end { if start >= end {
end = start + defaultStep end = start + defaultStep