has_any 64 个值后的性能坦克



我有一个查询,它通过优化执行得非常好,该优化使用 has_any 来过滤动态对象中的值。

突然间,它的性能下降了,我注意到当列表有超过 64 个值时会发生这种情况。

以下是 has_any(( 中使用的值数量不断增加的一些统计信息:

limit 10 totalcpu 58s, datascanned 9.1GB limit 20 totalcpu 63s, datascanned 13.2GB limit 30 totalcpu 80s, datascanned 17.5GB limit 40 totalcpu 92s, datascanned 21.8GB limit 60 totalcpu 124s, datascanned 30.3GB limit 64 totalcpu 130s, datascanned 32.1GB limit 65 totalcpu 12412s, datascanned 930GB limit 70 totalcpu 12263s, datascanned 868GB limit 80 totalcpu 13410s, datascanned 1.9TB

has_any(( 在一定限制后在内部将自身重写为正则表达式(现在是 64 个值,将来可能会增长 - 但仍然:限制将存在(。 如果你发现自己在动态数组中寻找一个特定的元素 - 你可以尝试set_intersect((函数: https://learn.microsoft.com/en-us/azure/kusto/query/setintersectfunction

使用此函数将检查:

... | 其中array_length(set_intersect(来源,lookup_array((>0

最新更新