开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

Hologres这个语句为啥走不到fixed plan,pk1+pk2是完整的主键?

Hologres这个语句为啥走不到fixed plan,pk1+pk2是完整的主键,改写为select语句是可以走fixed plan的?

UPDATE
public.table_name
SET
tags = CASE WHEN array_contains (tags, '22222') THEN
tags
ELSE
ARRAY_APPEND(tags, '22222')
END
WHERE
pk1 = xx
AND pk2 = xx;

展开
收起
真的很搞笑 2024-01-16 12:31:14 48 0
2 条回答
写回答
取消 提交回答
  • 应该是set里有函数计算,array_contains和array_append ,此回答整理自钉群“实时数仓Hologres交流群”

    2024-01-16 13:26:22
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Hologres是一个列式存储的分布式数据库,它使用列存索引来加速查询和更新操作。在给定的UPDATE语句中,使用了CASE语句和ARRAY_APPEND函数来修改tags数组。由于CASE语句和ARRAY_APPEND函数涉及到对多行数据的修改,因此Hologres无法直接走行存索引。

    然而,当将UPDATE语句改写为SELECT语句时,Hologres可以走fixed plan。这是因为在SELECT语句中,Hologres可以直接访问到目标行的tags数组,而不需要遍历整个表。这样,Hologres就可以利用列存索引来提高查询性能。

    以下是改写后的SELECT语句:

    SELECT
    tags
    FROM
    public.table_name
    WHERE
    pk1 = xx
    AND pk2 = xx;
    

    在这个SELECT语句中,Hologres可以直接访问到目标行的tags数组,并利用列存索引来提高查询性能。

    2024-01-16 12:56:54
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关产品

  • 实时数仓 Hologres
  • 相关电子书

    更多
    实时数仓Workshop(广州站)- 李佳林 立即下载
    阿里云实时数仓Hologres技术揭秘2.0 立即下载
    实时数仓Hologres技术实战一本通2.0版(下) 立即下载