Take note of how :filtered works 99% of the time. A filter operator is applied after all matches to your search constraints are loaded.
So for examplea Search will load 1000 matches (matching search constraints) and then run the filters to those 1000 matches.
So what happens is you are incurring WU from the search constraints returning a lot nore data than you want, and then incurring extra clientside processing, filtering those 1000.
In your case, you have multiple searches with filters that then also need to check for intersects. Hence the heavy WU and delay from clientside processing.
Beforr shifting to an external database try see if you can do every search without filters. This might involve reworking your DB setup.