【Oracle】给两百万表填充不同数据,耗时也不同 相同数据平均每秒六万条强,不同数据平均每秒三万条弱。


有一张emp619表结构如下:

create table emp619(
    id number(12),
    name nvarchar2(20),
    title nvarchar2(20),
    primary key(id)
);

使用如下SQL充值:

insert into emp619
select rownum,
       'abcdefgfhi1234567890',
       'abcdefgfhi1234567890'
from dual
connect by level<2000001;

两百万数据耗时32秒:

SQL> set timing on;
SQL> insert into emp619
  2  select rownum,
  3         'abcdefgfhi1234567890',
  4         'abcdefgfhi1234567890'
  5  from dual
  6  connect by level<2000001;

已创建2000000行。

已用时间:  00: 00: 32.62
SQL> commit;

可以发现除了ID,每条记录的name和title字段都是相同的,这样的数据填充方式是平均每秒六万条强

使用如下SQ充值:

insert into emp619
select rownum,
       dbms_random.string('*',dbms_random.value(6,20)),
       dbms_random.string('*',dbms_random.value(6,20))
from dual
connect by level<2000001;

耗时为67秒:

SQL> insert into emp619
  2  select rownum,
  3         dbms_random.string('*',dbms_random.value(6,20)),
  4         dbms_random.string('*',dbms_random.value(6,20))
  5  from dual
  6  connect by level<2000001;

已创建2000000行。

已用时间:  00: 01: 07.21
SQL> commit;

这种方式name和title字段接近真实。这样的填充方式平均每秒三万条弱

END

相关