【发布时间】:2017-09-15 11:41:06
【问题描述】:
我有一个小table1,路径类似于foo/bar。
我有一个大表 2,上面有完整的网址,例如 https://www.google.com/foo/bar/。
我想选择 table1 路径,这些路径在 table2 的完整 url 中不存在。
我尝试使用 REGEXP 进行 JOIN,但查询速度很慢,我可能选择了错误的连接:
SELECT t1.path
FROM table1 AS t1
RIGHT JOIN `table2` AS t2
ON ( REPLACE(t1.path, '/', '\\/') REGEXP ".+" + t2.url + ".*" )
WHERE t1.path != ""
ORDER BY t1.id DESC
LIMIT 10
带有 NOT IN 的子查询可能会有所帮助,但我不确定如何使用第一个查询的结果路径:
SELECT path
FROM `table1`
WHERE path != ""
NOT IN (
SELECT url FROM `table2` WHERE url LIKE "%" + [path of query 1] + "%"
)
ORDER BY id DESC
LIMIT 10
如何解决?
【问题讨论】:
-
你不能。您的数据不适合快速
join。 -
那么单独的查询或路径的每个结果?
-
。 . MySQL 不提供对部分字符串匹配作为连接条件的有效支持。