在 influxDB 中查询显得超级慢。 _field 和 _measurement 不是“索引”吗?

问题描述 投票:0回答:1

我使用日期列上的过滤器以及

_field
_measurement
运行一个简单的查询。查询运行了近10分钟,速度超级慢。这些列上是否有自动索引,或者有什么方法可以加快速度?

这里的查询:

from(bucket: "xyz")
|> range(start: 2024-09-01, stop: 2024-10-01)  
|> filter(
     fn: (r) => 
       r._field == "value" and 
       contains(value: r._measurement, set: ["aa", "bb", "cc", "dd", "ee"])
   ) 

感谢您的任何提示。

performance indexing influxdb
1个回答
0
投票

range()
函数自然会被索引,但有一些关键的优化机会:

对于 _field 和 _measurement 过滤:

  • 考虑过滤器的顺序 - 将最严格的过滤器放在最前面
  • 考虑对多个值使用 =~ 正则表达式而不是 contains() _measurement 列具有您可以利用的特殊索引行为
  • 尝试将时间范围分成更小的块
  • 还可以考虑使用 EXPLAIN 功能来分析查询性能

这是您可以尝试的稍微优化的查询版本:

fluxCopyfrom(bucket: "xyz")
|> range(start: 2024-09-01, stop: 2024-10-01)  
|> filter(fn: (r) => r._field == "value")
|> filter(fn: (r) => r._measurement =~ /^(aa|bb|cc|dd|ee)$/)
© www.soinside.com 2019 - 2024. All rights reserved.