I would definitely run this thru Visual Explain and create the
recommended index(es). It could improve it from minutes/hours to seconds/minutes.
Maybe not that much, but it should help.
If the system already has an access path, that can speed up execution.
I can't imagine that would cause it to jump, apparently randomly,
between minutes and hours to execute.