От и расскажешь

Рассказываю.
Всё делалось на отдельном сетевом компе, где установлен FB2 RC3 на тестовой 
базе.
Первоначальный размер ~1.5Gb страница 16384 на отдельном разделе, остальные 
настройки поумолчанию.
Время замерялось в эксперте с моего компа.
Итак
BaseTable (BT), ChildTable (CHT)

CREATE TABLE BT (
   ID      BIGINT NOT NULL,
   CLS_ID  BIGINT
);
ALTER TABLE BT ADD CONSTRAINT PK_BT PRIMARY KEY (ID);

CREATE TABLE CHT (
   ID    BIGINT NOT NULL,
   FLAG  INTEGER
);
ALTER TABLE CHT ADD CONSTRAINT PK_CHT PRIMARY KEY (ID);
ALTER TABLE CHT ADD CONSTRAINT FK_CHT_1 FOREIGN KEY (ID) REFERENCES BT (ID);

Запрос:
execute block
as
declare variable i integer;
declare variable id bigint;
begin
 i = 0;
 while (i<1000000) do
 begin
   insert into objects(ID, CLS_ID)
   values(gen_id(gen_objects_id, 1), 1)
   returning ID
   into :id;

   insert into data(ID, FLAG)
   values(:id, 0);
   i = i + 1;
 end
end

Итак время выполнения:
BT PK+, CHT PK+ FK+   ~  1m30s
BT PK+, CHT PK+ FK-   ~  1m00s
BT PK-, CHT PK+ FK-   ~  0m38s
BT PK+, CHT PK- FK+   ~  1m13s
BT PK+, CHT PK- FK-   ~  0m37s
BT PK-, CHT PK- FK-   ~  0m15s

Помоему вполне достаточно, чтобы об этом задуматся.

Ответить