Thanks all for the suggestions.
The combination of pdoResources and conditionalTpls has dropped the page time from 0.8 secs to 0.1 secs so many thanks for the good advice.
If it helps others, I am using:
[[!pdoResources?
&parents=`198`
&limit=`0`
&depth=`1`
&includeContent=`1`
&includeTVs=`installer_level,installer_region,installer_address,installer_locality,installer_postcode,installer_tel,installer_email,installer_url,
installer_email,installer_image,gmarker_latitude,gmarker_longitude`
&showHidden=`1`
&processTVs=`0`
&sortby=`{"installer_level":"ASC","pagetitle":"ASC"}`
&sortdirTV=`ASC`
&tplCondition=`tv.installer_level`
&conditionalTpls=`{"level1":"level1_template","level2":"level2_template","level3":"level3_template"}`
&tpl=`default_template_which_isnt used_but_is_required`
&tvFilters=`installer_region==%'.$_GET['region'].'%`
]]'
The next level up would be to use a separate table but that is out side of my comfort zone at the moment. Is the recommendation to move all TV related data into separate tables or just those that one would search or sort by?
It would be great if it was possible to control this all from the TV tab eg create a normal text TV or create an indexed text TV
Kind regards
James