Я пишу код, который должен каскадно удалять записи в определенной базе данных, и я заметил падение производительности, поскольку в базе данных больше записей. Когда я просто заполняю базу данных, не кажется, что есть большое падение производительности между началом заполнения и прямо в конце, но когда я выполняю каскадное удаление, производительность снижается с большей базой данных. Я предполагаю, что для каскада потребуется выполнить множество соединений, чтобы найти все связанные записи в других таблицах, что замедляет работу с большими наборами данных. Но когда я просто добавляю запись, не нужно ли также проверять уже существующие первичные ключи и другие уникальные ограничения, и не должно ли это также быть медленнее в больших наборах данных, или это так невероятно быстро по сравнению с процессом удаления что трудно заметить падение производительности, когда вы просто заполняете базу данных? Или каскады просто медленные, потому что я специально не индексировал таблицы, на которые он каскадируется?
Итак, во-вторых, будет ли индексация каскадных таблиц ускорять каскадирование, если эти таблицы уже имеют сгенерированный идентификатор в качестве первичного ключа? В более общем смысле: автоматически ли индексируются первичные ключи?