If the issue is because of the huge number of records, then in TM it is possible to split the queries. In the current project we have different queries of STO, SO, PO etc.. Even in SOs queries are split based on mode of transport, source location, dates etc... Secondly, we removed unnecessary columns from the list. It greatly improved the performance (including initial query and refresh)
This needs to be done at some point of the time in the project. The records are gonna build up and having a query for the entire records as default is not a viable solution.
Note: This doesn't address the issue of POWL takes too much time to query, when the number of records are small.