У меня есть две таблицы: A и B, каждая из которых содержит строки. Мне нужно найти все соответствия между таблицей A и таблицей B, когда строка таблицы A содержит строку таблицы B (B.stringColumn - подстрока A.stringColumn).SQL: Внутреннее соединение, в котором предложение WHERE содержит CHARINDEX() - Улучшение производительности
Я сделал это с помощью следующего кода с помощью CHARINDEX()
функции:
SELECT *
FROM A, B
WHERE CHARINDEX(B.stringColumn, A.stringColumn) > 0
Есть ли более эффективный способ сделать это?
Эти таблицы могут содержать огромное количество данных, поэтому я задаю этот вопрос.
Спасибо заранее, Нуриэль
Я считаю, что если вы просто выполняете поиск по подстроке в любой другой строке, то может помочь только полнотекстовое индексирование (но не слишком знакомое с FTI). Если это случай строки, начинающейся с подстроки, вы можете воспользоваться индексом в целевом столбце. Я бы использовал синтаксис: A.stringColumn LIKE% B.stringColumn% и посмотреть, может ли план выполнения использовать индексы. – BlackjacketMack