我有一个关于在 sql 查询中使用函数的问题。
我有以下用于从表中获取用户名的功能
CREATE OR REPLACE
FUNCTION get_info(
p_emp_no employees.emp_id%TYPE)
RETURN VARCHAR2
AS
o_userid employees.emp_name%TYPE;
BEGIN
SELECT emp_name INTO o_userid FROM employees WHERE emp_id = p_emp_no;
RETURN o_userid;
END;
/
当我在 sql 代码中使用上述函数时
select product_no, get_info(p.raised_by)
from products p, employees e
where p.raised_by = e.emp_no
执行比下面的 sql 花费更多的时间
select product_no, e.emp_name
from products p, employees e
where p.raised_by = e.emp_no
第二个查询比第一个查询快。
那么是否建议使用函数从表中获取用户名或使用直接列名并使用连接来链接员工表?
我问的原因是可能有多个对员工表的引用来获取raise_by、created_by、modified_by等的用户名。所以我认为使用函数来获取 emp_name 而不是与员工表的多个连接会更好。
对此的任何见解都是非常可观的。
谢谢