我试图通过说它是不可变的或稳定的来使用函数来固定 posgresql 选择,所以我有一个函数
CREATE OR REPLACE FUNCTION get_data(uid uuid)
RETURNS integer AS $$
BEGIN
RAISE NOTICE 'UUID %', $1;
-- DO SOME STUFF
RETURN 0;
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
当我这样称呼它时:
SELECT get_data('3642e529-b098-4db4-b7e7-6bb62f8dcbba'::uuid)
FROM table
WHERE true LIMIT 100;
我有 100 条结果,只提出了一条通知
当我这样称呼它时:
SELECT get_data(table.hash)
FROM table
WHERE 1 = 1 AND table.hash = '3642e529-b098-4db4-b7e7-6bb62f8dcbba' LIMIT 100;
我有 100 个结果和 100 个通知
添加条件 (table.hash = '3642e529-b098-4db4-b7e7-6bb62f8dcbba') 以确保 in 参数相同
table.hash 是 uuid 类型
问题是: 那么如何强制 PG 去一些如何缓存函数的结果呢?(如果可能的话)我只想在第二种情况下提出一个通知(函数调用)......