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博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1071982/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1071982/