0

当我使用 Like 时,访问卡住

SELECT ox.*, '+++++++++++' AS judo, sh2.*
FROM OXUS AS ox INNER JOIN Sheet2 AS sh2 ON sh2.ID_P LIKE "*" & ox.ID_P;

如果我使用

SELECT ox.*, '+++++++++++' AS judo, sh2.*
FROM OXUS AS ox INNER JOIN Sheet2 AS sh2 ON sh2.ID_P=ox.ID_P;

立即打开。

4

2 回答 2

1

在这种情况下,您可以使用隐式连接,即 WHERE:

SELECT DISTINCT ox.P_ID, '+++++++++++' AS judo, sh2.P_ID
FROM OXUS AS ox, Sheet2 AS sh2
WHERE Instr(sh2.P_ID, ox.P_ID)>0

但是,它仅对查找行有用。

于 2012-08-13T09:27:50.063 回答
0

第一条语句是基于匹配 id 的表之间的直接连接。我怀疑也涉及一个索引。第二个语句是基于使用通配符来检查连接到 ID 上的所有内容(!)来连接表。它也可以根据类型从 int 转换为 varchar .... 全部不使用索引。

Like 语句的成本总是更高,因为它们必须单独检查特定匹配的列内容。不建议将它们用作连接的一部分。

我认为这是对真正问题的削减,因为类似的陈述没有意义。

你想达到什么目的?

于 2012-08-13T05:33:42.670 回答