【发布时间】:2013-07-01 03:49:40
【问题描述】:
在 SQL Server 数据库中,我有一个包含大量 INNER JOIN 语句的视图。最后一个连接使用 LIKE 谓词,这就是它工作太慢的原因。查询看起来像:
SELECT *
FROM A INNER JOIN
B ON A.ID = B.ID INNER JOIN
C ON C.ID1 = B.ID1 INNER JOIN
...........................
X ON X.Name LIKE '%' + W.Name + '%' AND
LIKE '%' + W.Name2 + '%' AND
LIKE '%' + W.Name3 + '%'
我想使用 CONTAINS 而不是 LIKE 作为:
SELECT *
FROM A INNER JOIN
B ON A.ID = B.ID INNER JOIN
C ON C.ID1 = B.ID1 INNER JOIN
...........................
X ON CONTAINS(X.Name, W.Name) AND
CONTAINS(X.Name, W.Name2) AND
CONTAINS(X.Name, W.Name3)
我知道 CONTAINS 比 LIKE 工作得更快,而且不能在 JOIN 语句中使用 CONTAINS。 在这种情况下是否有任何解决方法或建议? 提前致谢。
【问题讨论】:
-
SELECT * FROM tableA AS_a INNER JOIN tableB AS b ON b.field LIKE CONCAT('%', CONCAT(a.field, '%'));
标签: sql-server join contains sql-like