"Dmitry E. Oboukhov" <unera@debian.org> writes:
> Имеются таблицы
>
> |t1_id|...|
> |t2_id|t1_id|...|
> |t3_id|...|
> |t4_id|t1_id|t3_id|...|
>
> То есть таблички с форейгнами.
>
> Объявлены столбики связей так:
>
> t1_id INTEGE REFERENCES t1 (t1_id) ON DELETE CASCADE ON UPDATE
> CASCADE;
foreign key не создают индексы, у Вас созданы на каждой таблице индексы по foreign key?
> План показывает примерно такой:
>
> QUERY PLAN
> ----------------------------------------------------------------------------------------
> Delete on t1 (cost=0.00..8.59 rows=1 width=6)
> -> Index Scan using t1_pkey on t1 (cost=0.00..8.59 rows=1 width=6)
> Index Cond: (id = 2919364)
> (3 rows)
А какая версия сервера? Здесь скорее всего не показываются вызовы служебных триггеров foreign key
в которых возможно при отсутствии индексов по t1_id проверка и обновление внешних ключей идёт
по seq scan.
--
С уважением, Сергей Бурладян