考えられるオプションの 1 つは、リモート テーブルをローカル サーバーにレプリケートすることです。これにより、すべてのテーブルが同じサーバーに配置され、オプティマイザが統計を使用して最適な計画を生成できるようになります。trpUTMid のみを使用しているため、その列を複製できます。
別のオプションは、一時テーブルを使用することです。同じ考えで、同じサーバー上のすべてのテーブルを取得します。
SELECT trpUTMid
INTO #Yazoo_TrackingAcomSearches_tbl
FROM [YAZOO].[MLT_VisitTracking].[dbo].TrackingAcomSearches_tbl
SELECT t.SearchId, t.VisitSourceId, t.SiteDomainId, t.trpUTMid, t.FlightPlus, t.StartDate,
t.CountryId, t.ProvinceId, t.Locationid, t.PlaceId, t.EstabId, t.CheckInDate,
t.CheckOutDate, t.Rooms, t.Room1Adults, t.Room1Children, t.Room2Adults, t.Room2Children,
t.Room3Adults, t.Room3Children, tc.OutcomeDate, tc.OutcomeId, tc.HotelsFound, tc.Notes
FROM [MLT_VisitTracking].[dbo].TrackingAcomSearches_tbl t
INNER JOIN TrackingAcomSearchesOutcome_tbl tc
ON t.trpUTMid = tc.trpUTMid
LEFT JOIN #Yazoo_TrackingAcomSearches_tbl tid
ON t.trpUTMid = tid.trpUTMid
WHERE tid.trpUTMid IS NULL
パフォーマンスを向上させるために、一時テーブルにインデックスを作成することもできます。
また、null の古い左結合ではなく、存在しないことを確認することをお勧めします (詳細については、こちらをお読みください)。
SELECT trpUTMid
INTO #Yazoo_TrackingAcomSearches_tbl
FROM [YAZOO].[MLT_VisitTracking].[dbo].TrackingAcomSearches_tbl
SELECT t.SearchId, t.VisitSourceId, t.SiteDomainId, t.trpUTMid, t.FlightPlus, t.StartDate,
t.CountryId, t.ProvinceId, t.Locationid, t.PlaceId, t.EstabId, t.CheckInDate,
t.CheckOutDate, t.Rooms, t.Room1Adults, t.Room1Children, t.Room2Adults, t.Room2Children,
t.Room3Adults, t.Room3Children, tc.OutcomeDate, tc.OutcomeId, tc.HotelsFound, tc.Notes
FROM [MLT_VisitTracking].[dbo].TrackingAcomSearches_tbl t
INNER JOIN TrackingAcomSearchesOutcome_tbl tc
ON t.trpUTMid = tc.trpUTMid
WHERE NOT EXISTS (
SELECT NULL
FROM #Yazoo_TrackingAcomSearches_tbl
WHERE trpUTMid = t.trpUTMid
)