当 RHS 不完全是一项时,Kusto 中“has”运算符的性能有多好?

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

has操作符上的

文档
讨论了我们如何从术语搜索中受益。它还提到,如果术语短于三个字符,搜索将退回到列扫描而不是使用术语索引。

回顾我们的一些监控查询,我发现使用

has
的示例与这些类似:

Message has "Heart Beat"
Message has "ends:"

重新阅读文档,我找不到提及如果 RHS 超过一个术语或一个术语加上一些非字母数字字符,则搜索如何进行。测试表明,它在功能上按预期工作,正确识别字符串的出现,就好像它是一个完整的术语一样,但是性能方面,我们仍然受益于术语索引还是搜索回退到扫描列值?

kql azure-data-explorer
1个回答
0
投票

根据文档

术语是字符串中字母数字字符的最大序列。

has
运营商将根据条款进行工作。 AFAIK,在 RHS 超过一个术语的情况下,术语索引会更好,因为它可以忽略将被视为分隔字符的特殊字符。但在第二种情况下
ends:
,搜索会退回到列扫描,就像包含特殊字符一样。

术语不超过3个字符的情况下,最好使用

contains
而不是
has
。您可以在下面的示例中看到相同的内容。

使用有:

enter image description here

使用包含:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.