规则 5.11:能不用提示(HINTS)尽量不要使用,如果必须使用提示来提高语句的性能,要注意提示的正确写法,“*”与“+”之间不能有空格,如果SQL语句使用了表的别名,提示也必须使用表的别名而不是表名。
select /*+ use_nl(a b) leading(a) */ a.column1, a.column2, b.column1, b.column2
from t_tablename1 a, t_tablename2 b
where a.column1 = b.column1
and a.column3 = value;
规则 5.12:禁止在PL/SQL Developer等工具中执行select * from t_tablename for update,然后点击锁图标方式,再编辑数据的方式进行更新数据库中的数据。
规则 5.13:如果存储过程或函数返回游标类型参数,必须在任何出口前打开游标。
create or replace procedure p_procedurename (
cur_returnset out pkg_service.resultset --返回结果集
)
as
begin
if ( i_l_flag > 0 ) then
open cur_returnset
for select 0 as ret, column as msg
from t_tablename;
return;
else
open cur_returnset
for select -1 as ret, 'ErrorMsg' as msg
from dual;
return;
end if;
end;
&说明
此类操作将消耗大量的CPU和内存资源。