I see the problem, but I've no satisfying solution therefore yet. You want to implement a kind of paging in your front end i.e. you want "page" 2 of your selection result and this are e.g. the rows 10 to 20 of your SELECT.
So you need something like SELECT ... FROM start_row TO end_row.
But finally this would not improve the performance, because the database has to walk through the table the same you do it now.
I currently see only one way to improve the performance. You have to analyze the most relevant search fields in your WHERE statement and create fitting indexes at the affected tables.