What is the difference between a function, a procedure and a trigger? I know the basic differences, but I would like to know the answers based on the performance tuning aspect (especially function and procedure, as in Oracle even procedures can return values using OUT).
The major difference to keep in mind is that trigger code is hard-parsed every time the trigger runs. You should therefore code all of your trigger actions in stored procedures (preferably implemented in packages, per good programming practice), and limit the trigger body to a PL/SQL block that just invokes the procedure, e.g.:
BEGIN my_procedure(); END;
or use the CALL statement instead of a PL/SQL block: