我有一个intarray
列feature_value_ids
物化视图(~100k行)。我想要的是根据物化视图上的某些条件从该列中选择所有唯一标识DISTINCT over huge unnest
此查询运行正常,aprox。 30毫秒,让〜1万行:
SELECT unnest(feature_value_ids) FROM dematerialized_products
WHERE is_private = 'f' AND product_category_ids && ARRAY [38]
不过,如果我添加DISTINCT,查询降至〜400毫秒,从而〜5K行
SELECT DISTINCT unnest(feature_value_ids) FROM dematerialized_products
WHERE is_private = 'f' AND product_category_ids && ARRAY [38]
我试图做一个递归查询,没有运气(〜35秒),像这样:
WITH RECURSIVE t AS (
(SELECT min(value_id) AS value_id FROM z)
UNION ALL
SELECT (SELECT min(value_id) FROM z WHERE value_id > t.value_id) AS value_id
FROM t
WHERE t.value_id IS NOT NULL
), z as (
SELECT unnest(feature_value_ids) as value_id
FROM dematerialized_products a
WHERE is_private = 'f' AND product_category_ids && ARRAY [38]
)
SELECT * FROM t WHERE t.value_id IS NOT NULL
我想这是因为z
是,在每次评估递归查询并