От и расскажешь
Рассказываю.
Всё делалось на отдельном сетевом компе, где установлен 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
Помоему вполне достаточно, чтобы об этом задуматся.