Вы не предоставили код, который вы написали, поэтому я думаю: курсоры означают PL / SQL. Если вы делаете это в цикле, строка за строкой, это будет медленно, медленно.
Поскольку в обеих таблицах (A и B) есть общие столбцы, я бы предложил сделать это в чистом SQL: объединить эти две таблицы и вставить результат в C. Что-то вроде
insert into c (id, yearmonth, ...)
select a.id, a.yearmonth, ...
from a join b on a.id = b.id;
Убедитесь, что индексы существуют для столбцов, которые вы используете для объединения таблиц. Или, что еще лучше, сравните планы объяснения в обоих случаях (с индексами и без них) и выберите вариант, который кажется наилучшим.