Так обрабатывайте пачками, страниц по 50-100.
Вас никто не заставляет сразу же все-все записи обрабатывать.
Можно конечно где-то в Memcached, например, хранить id-title и там искать каждый раз. Можно вообще в память выгрузить все текущие категории и держать их там, при этом добавляя новую, если её нет в массиве.
Сергей Беловенцев: у вас в базе данных поле id имеет auto_increment? Вы понимаете, что id генерируется автоматически при добавлении записи в базу данных?
Yii2 автоматически после save() для новой модели заполняет её id (primary key).
Greg Popov: у вас будет ссылка с parent_id на id в той же таблице. Тоже ключ, но не внешний, а ссылающийся на ту же таблицу. И ему тоже можно задать ON UPDATE CASCADE.
Дмитрий Куликов: а если у вас на внешних сайтах ссылки стоят типа /publication/type?type=1 и вы хотите, чтобы при переходе на неё был редирект на /publication/news, то уже надо колдовать с mod_rewrite, я полагаю.
Дмитрий Куликов: где именно он идет в url именно так? Если вы создаете через Url::to, то и передавайте туда сразу строку news или post.
В модели Publication определите статический массив, в котором 1 и 2 ключи, а news и post - значения. И потом тяните по ключу значение для генерации url.