Основываясь на том, что уже было опубликовано, вы можете создать индексированное представление, чтобы действительно ускорить процесс.
Использование выборочных данных CTE6 ...
--Loading data
create table t1 (id varchar(10));
insert into t1 (id) values ('100100'),('200100'),('300100')
insert into t1 (id) values ('100200'),('200200'),('300200')
insert into t1 (id) values ('100300'),('200300'),('300300')
insert into t1 (id) values ('0100'),('0200'),('0300')
insert into t1 (id) values ('00010'),('00020'),('00030')
create table t2 (id varchar(10));
insert into t2 (id) values ('020'),('010')
GO
-- The View
CREATE VIEW dbo.vw_t1t2 WITH SCHEMABINDING AS
SELECT t1 = t1.id, t2 = t2.id, cb = COUNT_BIG(*)
FROM dbo.t1 AS t1
CROSS JOIN dbo.t2 AS t2
WHERE CHARINDEX(t2.id,t1.id) > 0
GROUP BY t1.id, t2.id
GO
-- The index (may need to add something else to make UNIQUE)
CREATE UNIQUE CLUSTERED INDEX uq_cl_vwt1t2 ON dbo.vw_t1t2(t1,t2);
GO
Это будет очень хорошо работать для операторов SELECT, но может повлиять на изменения данных в отношении t1 и t2, поэтому убедитесь, что используется наименьший возможный тип данных и тольковключите столбцы, которые вы уверены, что вам нужно (Varchar (10) хорошо). Я включил COUNT_BIG (), потому что это требуется в индексированных представлениях, использующих GROUP BY.