I have a query that collects data from six tables of the same type. To create the final selection, I use UNION ALL. Unfortunately, the optimizer scans each of the six tables in turn, and then collects into one. Is there any way to make the optimizer scan tables in parallel?
|--Concatenation
|--Index Scan(OBJECT:([EGeoCache].[NonClusteredIndex-20190815-105027] AS [GC]))
|--Index Scan(OBJECT:([YGeoCache].[NonClusteredIndex-20190814-103125] AS [GC]))
|--Index Scan(OBJECT:([GGeoCache].[NonClusteredIndex-20190814-103358] AS [GC]))
|--Index Scan(OBJECT:([HGeoCache].[NonClusteredIndex-20190814-103422] AS [GC]))
|--Index Scan(OBJECT:([DGeoCache].[NonClusteredIndex-20190814-103305] AS [GC]))
|--Index Scan(OBJECT:([SGeoCache].[NonClusteredIndex-20190814-103457] AS [GC]))
SELECT
VEGC.AddressID
, VEGC.Lat
, VEGC.Lon
FROM vEGeoCache AS VEGC
UNION ALL
SELECT
VYGC.AddressID
, VYGC.Lat
, VYGC.Lon
FROM vYGeoCache AS VYGC
UNION ALL
SELECT
VGGC.AddressID
, VGGC.Lat
, VGGC.Lon
FROM vGGeoCache AS VGGC
UNION ALL
SELECT
VHGC.AddressID
, VHGC.Lat
, VHGC.Lon
FROM vHGeoCache AS VHGC
UNION ALL
SELECT
VDGC.AddressID
, VDGC.Lat
, VDGC.Lon
FROM vDGeoCache AS VDGC
UNION ALL
SELECT
VSGC.AddressID
, VSGC.Lat
, VSGC.Lon
FROM vSGeoCache AS VSGC