【发布时间】:2025-12-21 19:20:13
【问题描述】:
我有两个表:A 和 B,每个表都包含字符串。 当表A的字符串包含表B的字符串(B.stringColumn是A.stringColumn的子字符串)时,我需要找到表A和表B之间的所有匹配项。
我使用CHARINDEX() 函数通过以下代码完成了它:
SELECT *
FROM A, B
WHERE CHARINDEX(B.stringColumn, A.stringColumn) > 0
有没有更有效的方法?
这个表可能包含大量数据,这就是我问这个问题的原因。
提前致谢, 努里尔
【问题讨论】:
-
我相信,如果您只是在另一个字符串中的任何位置搜索子字符串,那么只有全文索引可以提供帮助(尽管对 FTI 不太熟悉)。如果是字符串以子字符串开头的情况,那么您可以利用目标列上的索引。我会使用语法:A.stringColumn LIKE %B.stringColumn% 并查看执行计划是否能够使用索引。
标签: sql-server sqlperformance sql-server-performance