azure-data-explorer - 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 ://docs.microsoft.com/en-us/azure/kusto/query/setintersectfunction
使用此功能将检查:
... | 其中 array_length(set_intersect(source,lookup_array))>0
推荐阅读
- xcode - 我是否需要为 macOS 应用内购买 (IAP) 启用沙盒网络功能?
- html - 如何将html动态数据发送到外部python变量?
- flutter - 如何在颤动中弹出动画
- java - Java selenium 读取 java 脚本弹出值
- reactjs - 使用 react 和 firebase 从管理页面创建用户帐户
- java - 使用 Firebase 从缓存中获取离线图像
- android - gradle 依赖问题 - recyclerview 和 cardview
- java - Java中的多态性有什么替代方法吗?
- r - 通过对现有列的组合执行计算来创建多个数据框列
- php - PDOException: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: no such host known