Это то, что вы ищете, базовое соединение?
SELECT known.CCID, export.[Computer Name] AS cname
FROM
table1 AS export
INNER JOIN table2 AS known ON LOWER(export.[Computer Name]) = LOWER(LEFT(known.cname, LEN(export.[Computer Name])))
WHERE LastVersionFlag=1
Редактировать: Вот несколько советов по ускорению запроса:
Во-первыхСтроковые операции в соединении очень дороги.Вы можете избежать необходимости вызывать lower (), если вы используете сопоставление без учета регистра для объединения.
например, ...ON known.cname = export.[Computed Column] collate SQL_Latin1_General_Cp437_CI_AS_KI_WI
Ваш лучший шаг - создать постоянный вычисляемый столбец в таблице 2, который просто содержит имя cname, используя вашу формулу из объединения LEFT(known.cname, LEN(export.[Computer Name]))
, затем вы можете поместить индексна вычисляемом столбце, а также столбце cname таблицы1.Когда вы закончите, ваше объединение будет простым равенством, а не сравнением, которое сильно манипулирует.Это позволит обработчику запросов составить более оптимизированный план.