"D. Dante Lorenso" <dante@xxxxxxxxxxx> writes: > This format causes the function to execute too many times: > SELECT COUNT(*) AS result > FROM credit_card > WHERE card_number_enc = cc_encrypt('4111-1111-1111-1111', 'pwd') > AND card_number_enc != cc_encrypt('4111111111111111', 'pwd'); If the function is marked immutable that query should certainly evaluate it only twice. I notice that the EXPLAINs show it as credit_card_encrypt() not cc_encrypt() --- maybe you got confused about which function you were adjusting the properties of? regards, tom lane