假设我有一个 Hive 查询,看起来像这样:
SELECT COUNT(*) FROM my_table WHERE
col1 LIKE "%str1%" -- matches 1% of rows
OR col1 LIKE "%str2%" -- matches 1% of rows
OR col1 LIKE "%str3%" -- matches 0 rows
OR col1 LIKE "%str4%" -- matches 90% of rows
(...more...);
如果我匹配的其中一些字符串比其他字符串更常见,我想知道从移动col 1 LIKE "%str4%"
到这个列表的顶部我会得到什么(如果有的话)性能提升。
上面的例子有点简单,但是如果这些OR
操作中的每一个都是一个长字符串上的正则表达式匹配,我想执行 3 个几乎所有时间都失败的匹配 ( str1
, str2
, ) 的时间会变得非常昂贵。str3
Hive 是否按顺序循环执行这些操作并在确定true
匹配时中断?我想有必要问一下等效的 Pig 操作是否也能以这种方式工作。