mod函数和sysdate函数类似,都为系统函数,mod函数性能极差。
实际中应用mod函数的地方比较多,比如指定每多少条记录进行一次批量提交。
-
SET timing ON
-
BEGIN
-
FOR i IN 1..1000000 LOOP
-
IF mod(i, 1000) = 0 THEN
-
dbms_output.put_line(\'abc\');
-
END IF;
-
END LOOP;
-
END;
-
/
-
-
PL/SQL procedure successfully completed.
-
-
Elapsed: 00:00:00.47
-
-
--避免使用MOD函数,使用自定义逻辑实现
-
DECLARE
-
j PLS_INTEGER := 0;
-
BEGIN
-
FOR i IN 1..1000000 LOOP
-
j := i + 1;
-
IF j = 1000 THEN
-
j := 0;
-
dbms_output.put_line(\'abc\');
-
END IF;
-
END LOOP;
-
END;
-
/
-
-
PL/SQL procedure successfully completed.
-
-
Elapsed: 00:00:00.08
-
-
SET timing OFF;
-
SET timing ON
-
BEGIN
-
FOR i IN 1..1000000 LOOP
-
IF mod(i, 1000) = 0 THEN
-
dbms_output.put_line(\'abc\');
-
END IF;
-
END LOOP;
-
END;
-
/
-
-
PL/SQL procedure successfully completed.
-
-
Elapsed: 00:00:00.47
-
-
--避免使用MOD函数,使用自定义逻辑实现
-
DECLARE
-
j PLS_INTEGER := 0;
-
BEGIN
-
FOR i IN 1..1000000 LOOP
-
j := i + 1;
-
IF j = 1000 THEN
-
j := 0;
-
dbms_output.put_line(\'abc\');
-
END IF;
-
END LOOP;
-
END;
-
/
-
-
PL/SQL procedure successfully completed.
-
-
Elapsed: 00:00:00.08
-
-
SET timing OFF;
-
SET timing ON
-
BEGIN
-
FOR i IN 1..1000000 LOOP
-
IF mod(i, 1000) = 0 THEN
-
dbms_output.put_line(\'abc\');
-
END IF;
-
END LOOP;
-
END;
-
/
-
-
PL/SQL procedure successfully completed.
-
-
Elapsed: 00:00:00.47
-
-
--避免使用MOD函数,使用自定义逻辑实现
-
DECLARE
-
j PLS_INTEGER := 0;
-
BEGIN
-
FOR i IN 1..1000000 LOOP
-
j := i + 1;
-
IF j = 1000 THEN
-
j := 0;
-
dbms_output.put_line(\'abc\');
-
END IF;
-
END LOOP;
-
END;
-
/
-
-
PL/SQL procedure successfully completed.
-
-
Elapsed: 00:00:00.08
-
-
SET timing OFF;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1071982/
,如需转载,请注明出处,否则将追究法律责任。