mysql - 基于字符串的部分匹配连接 MySQL 表

标签 mysql database

我有两个表要加入 DomainLinks 分别有 1k 行和 700k 行

create table Domain (url varchar(255), tag varchar(255));
create table Links (ShortURL varchar(255), LongURL varchar(255));

输出应该在 Links.LongURL 中找到的所有字符串 Domain.url 的部分匹配上连接,结果应该从 Links< 返回 700k 行 表,没有找到匹配项的地方应该是 null

从这个 thread 中尝试了以下内容和 here

SELECT ShortURL,LongURL,tag
FROM Links fulljoin Domain 
ON Links.LongURL LIKE concat('%', Domain.url, '%');

最佳答案

这将是一项耗时的操作。您的查询是正确的,但正确的语法是:

SELECT ShortURL, l.LongURL, tag
FROM Links l LEFT JOIN
     Domain d
     ON l.LongURL LIKE concat('%', d.url, '%');

也就是说,对于您的两个表,此查询将需要一段时间。它需要使用 like 进行大约 700,000,000 次比较。没有简单的方法可以加快查询速度。

关于mysql - 基于字符串的部分匹配连接 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026673/

相关文章:

mysql - ASP.NET CORE 与 MySQL 和 EF Core - 多连接字符串处理

php - Mysql更新错误

JavaScript - 当错误调用另一个函数时函数不会抛出错误

php - 换行符不显示

mysql - 如何链接一个经销商的产品表和多个零售店的关系? mysql

C# ASP.NET Web Api Controller - 使用 SqlCommand 从表中获取所有行

python - 使用 python-mysql 连接到旧的 mysql 安装,

mysql - 如何在MySQL中减去两个日期时间

python - 将 Django 管理站点用于模型的特定实例

php - 为什么我没有从这个 php 文件中得到 XML 输出?