繁体   English   中英

通过 AWS Athena 分桶表中的多个值进行查询

[英]Query by multiple values from an AWS Athena bucketed table

我有一个分桶表,我想从中查询多个值。 这是一个例子:

SELECT *
FROM my_bucketed_table
WHERE bucketed_column IN (value1, value2)

结果是对表进行全扫描,而不是使用索引。

当我使用 union 一次查询每个值时,它在扫描数据方面按预期工作:

SELECT *
FROM my_bucketed_table
WHERE bucketed_column = value1
UNION
SELECT *
FROM my_bucketed_table
WHERE bucketed_column = value2

但我希望列表是动态的,所以这个解决方案对我来说不够好。

我希望扫描的数据与使用 IN 运算符或 JOIN 与另一个表的 UNION 解决方案中的数据相同

这是一个有点长的评论。

我认为您指的是分区修剪,这与“使用索引”有点不同。 您希望查询仅读取相关分区。

分区修剪非常棘手。 基本问题是查询在开始执行查询之前需要知道要读取哪些数据。 这通常通过要求对分区列进行显式比较来处理。

识别正确的分区应该与=>>=<<=一起正常工作。 使用innot in可能会变得更复杂。 当您在一个表上使用join并且未在联接中显式包含两个表的分区时,它可能不起作用。

你可以像下面这样尝试,这可能有助于使用索引

SELECT *
FROM my_bucketed_table
WHERE bucketed_column = 0000 or bucketed_column IN (value1, value2)

假设您的列中没有任何值 0000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM