We have One QVW and we have schedule task to refresh that QVW twice a day, 12:00 AM and 06:00 AM. Issue is when it runs at 12AM it got competed with in 55-60 minutes but when the same task reloads same QVW file for second time at 6 AM it takes around 2 hour 30-35 min.
I assume that your task didn't run one a separate machine and theferore it need to be share the resources with other tasks, services (user accesses per access point ?) and programs. If the runtimes are critical you will need to inquiry more parameter (other tasks, users and so on) and trying to optimize your loadings and applications and also to invest in more hardware to split the various qlikview services on different machines or even the use of several machine for one services in a clustered environment.
It is the load from these table O2C_LINK_TABLE (several concatenations) which make the difference. If it's running on a own machine with no parallel qv-tasks I think the reason will be in some other system-tasks like windows shadow copies, some backup-routines, refreshing group policies and so on and/or the storage.system where the qvd's are stored is shared and busy with something.
Beside them I think your load is too large and it would be easier to handle + maintain and also to run it parallelized if you would split it in some slices and further to consider to implement incremental approaches. Here you will find some more informations how to optimize a datamodel: Advanced topics for creating a qlik datamodel