我有以下请求,使用 pg_trm 和 gin 索引:
SELECT
email,
first_name,
last_name
FROM external_patient
WHERE PGP_SYM_DECRYPT(cat_name::bytea, 'SUPER_AES_KEY') ILIKE $2
OR PGP_SYM_DECRYPT(cat_name::bytea, 'SUPER_AES_KEY') % $1
ORDER BY
(PGP_SYM_DECRYPT(cat_name::bytea, 'SUPER_AES_KEY') ILIKE $3) DESC
,(PGP_SYM_DECRYPT(cat_name::bytea, 'SUPER_AES_KEY') ILIKE $2) DESC
,(PGP_SYM_DECRYPT(cat_name::bytea, 'SUPER_AES_KEY') <-> $1)
,PGP_SYM_DECRYPT(cat_name::bytea, 'SUPER_AES_KEY')
LIMIT 30
列 cat_name 已加密,因此必须对其进行解密才能运行请求。但是,我想确保尽可能只解密一次(因为请求是 3ms 没有加密字段,3500 ms 有加密......
是否有特定的语法来确保该列只被解密一次?谢谢您的帮助。