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
2 番目のクエリは、最初のクエリよりも高速です。
関数を使用してテーブルからユーザー名を取得するか、直接列名を使用し、結合を使用して従業員テーブルにリンクすることをお勧めしますか?
私が尋ねた理由は、raised_by、created_by、modified_byなどのユーザー名を取得するために employees テーブルへの複数の参照がある可能性があるためです。
これに関する洞察は非常に高く評価されます。
ありがとう