Hi again,

I created a test case which shows the problem, using a new database.

Firebird CS 2.5.1 running on Windows 7, default firebird.conf.

Time to insert 200.000 records in a single-field table:

/*
 * Integer field, no PK
 */
create table t1 (
  id integer not null);

set term !! ;
execute block
as
  declare variable i integer;
begin
  i = 0;
  while (i < 200000) do
  begin
    insert into t1 values (:i);
    i = i + 1;
  end
end !!
set term ; !!

TIME: 2s199ms

/*
 * Integer field, with PK
 */
create table t2 (
  id integer not null);

alter table t2
  add constraint pkt2 primary key (id);

set term !! ;
execute block
as
  declare variable i integer;
begin
  i = 0;
  while (i < 200000) do
  begin
    insert into t2 values (:i);
    i = i + 1;
  end
end !!
set term ; !!

TIME: 3s869ms

/*
 * UUID field, no PK
 */
create table t3 (
  id char(16) character set octets not null);

set term !! ;
execute block
as
  declare variable i integer;
begin
  i = 0;
  while (i < 200000) do
  begin
    insert into t3 values (gen_uuid());
    i = i + 1;
  end
end !!
set term ; !!

TIME: 2s542ms

/*
 * UUID field, with PK
 */
create table t4 (
  id char(16) character set octets not null);

alter table t4
  add constraint pkt4 primary key (id);

set term !! ;
execute block
as
  declare variable i integer;
begin
  i = 0;
  while (i < 200000) do
  begin
    insert into t4 values (gen_uuid());
    i = i + 1;
  end
end !!
set term ; !!

TIME: 1m53s587ms <-------------------

I created a new database and ran the last test again:

TIME: 4m00s881ms <-------------------

Regards,

Fabiano

Reply via email to