Well done Solidworks! I have not had a crash for three weeks now and I am working a heavy cpu demanding project. :)
Now this "may" be irrelevant, but what I did was to look at every sub-assembly, then suppressed every part/assembly, except the first two in the tree.
After doing this, I looked at the mates between the two remaining parts/ assemblies and found that they were not at the top of the mate tree.
This happens due to design changes, parts replaced and even moving parts/assemblies up and down the tree. Perfectly normal when designing, but why do the mates not move automatically up/down the mates tree, with the parts/assemblies?
I then moved the mate to be at the top of the tree and continued down the tree, un-suppressing each part/assembly in turn, then moving the mates up the mate tree to correspond to the assembly.
A bonus of this action, is that you can see that the parts/assemblies, are not constrained in the assembled order. I can see why, this would give Solidworks, a headache!
This has not only reduced the crashing but has also improved the document opening speeds.
This takes time and is sooooooo boring, but it has helped a lot.
Now is there an automatic way of doing this or can it be added to future releases?