You might look into the placing your data in a structured data format on the page vs. having such a long URL. I think this will benefit your SEO better. If you have /Vacancies/Region/Vacancy and add the functions as categories/tags to the page and display them on our page in the structured data format, this would be better.
You might try a USING statement and turning off logging (see code sample below) while this is happening. Also if you're using workflow, you might want to account for that as well. Maybe turn workflow off during this import/update. You can also turn on DEBUG when running your code to see what is taking a long time to run. Maybe it has nothing to do with your code but maybe there is a cache key you need to clear to get things updated.
using (CMSActionContext context = new CMSActionContext())
{
// turn off all these "features" to speed things up during import/update
// could also look into other properties of "context" to disable
context.LogEvents = false;
context.LogSynchronization = false;
context.LogWebFarmTasks = false;
// perform your actions to add/update pages
foreach (var vacancy in vacancyCollection)
{
...
}
}