我有一个sql脚本,可以创建我的应用程序表,序列,触发器等。插入大约10k行数据。
我的网络很慢,当我从本地计算机运行此脚本时,需要很长时间才能完成。 想知道sqlplus(或sqldeveloper)是否支持在服务器上运行此脚本。因此,整个脚本首先被传送到执行的服务器,然后返回执行的日志文件。
答案 0 :(得分:0)
不,没有。有些事情你可以做,数据加载可能会更快,例如,如果你正在进行单独的插入,使用sql loader,并增加你的提交间隔。但是,我必须看到代码真的非常有用。
答案 1 :(得分:0)
如果您可以访问托管数据库的远程服务器,并且您有权在所述服务器上执行 sqlplus ,那么您一定可以。
答案 2 :(得分:0)
很少需要在服务器上运行这些类型的脚本。对批处理命令进行一些简单的更改可以显着提高性能。下面的所有更改都结合了多个语句,减少了网络往返次数。其中一些还减少了解析时间,即使脚本在服务器上运行,也会显着提高性能。
将INSERT合并为一个语句
替换单个插页:
insert into some_table values(1);
insert into some_table values(2);
...
使用这样的combind插入:
insert into some_table
select 1 from dual union all
select 2 from dual union all
...
使用PL / SQL块
替换个人DDL:
create sequence sequence1;
create sequence sequence2;
使用PL / SQL块:
begin
execute immediate 'create sequence sequence1';
execute immediate 'create sequence sequence2';
end;
/
使用内联约束
尽可能地结合DDL。例如,使用以下语句:
create table some_table(a number not null);
而不是:
create table some_table(a number);
alter table some_table modify a not null;