gpt4 book ai didi

arrays - 确保通过合并 2 个 bigint 数组创建数组中的唯一元素

转载 作者:行者123 更新时间:2023-11-29 12:31:59 24 4
gpt4 key购买 nike

确保通过合并其他 2 个 bigint 数组创建的 bigint 数组中值的唯一性的最有效方法是什么?

例如这个操作select ARRAY[1,2] || ARRAY[2, 3] 的结果应该是 1,2,3。我检查了扩展intarray并看到它不适用于 bigint

最佳答案

由于您要求高效 - 可以优化功能:

您的问题中没有任何内容需要排序输出。所以:

CREATE OR REPLACE FUNCTION f_merge_uniq(bigint[], bigint[])
RETURNS bigint[] AS
$func$
SELECT ARRAY(
SELECT unnest($1)
UNION
SELECT unnest($2)
)
$func$ LANGUAGE sql IMMUTABLE;

但您也可以对其进行排序,而且几乎不会增加成本:

CREATE OR REPLACE FUNCTION f_merge_uniq_sort(bigint[], bigint[])
RETURNS bigint[] AS
$func$
SELECT ARRAY(
SELECT DISTINCT x
FROM (
SELECT unnest($1)
UNION ALL
SELECT unnest($2)
) sub(x)
ORDER BY 1
)
$func$ LANGUAGE sql IMMUTABLE;

db<> fiddle here

由于多种原因,计划和执行接近两倍:

关于arrays - 确保通过合并 2 个 bigint 数组创建数组中的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57405548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com