php&mysql:使用表作为另一个表的过滤器列表

Jar*_*ier 5 php mysql comparison filter

我有两个mysql表.一个是坏词列表,另一个是与坏词列表进行比较的表.基本上我想过滤掉并返回一个行列表,其中包含在坏词表中没有出现任何单词的域.一些示例表:

坏词列表

+----------+------------------+
| id       | words            |
+----------+------------------+
| 1        | porn             |
| 2        | sex              |
+----------+------------------+
Run Code Online (Sandbox Code Playgroud)

要比较的域表

+----------+------------------+
| id       | domain           |
+----------+------------------+
| 56       | google.com       |
| 57       | sex.com          |
+----------+------------------+
Run Code Online (Sandbox Code Playgroud)

我想要返回结果如

+----------+------------------+
| id       | domain           |
+----------+------------------+
| 56       | google.com       |
+----------+------------------+
Run Code Online (Sandbox Code Playgroud)

需要注意的是,这些表没有任何共同点,所以我甚至不确定这是最好的方法.我在PHP 使用了一个比较函数,但这似乎太慢了几十万行才能搜索.

dev*_*ler 4

可以从mysql获取。像这样:

SELECT
    d.*
FROM 
    domains d 
LEFT JOIN
    words w ON(d.domain LIKE CONCAT('%',w.word,'%') ) 
GROUP BY
    d.domain
HAVING
    COUNT(w.id) < 1
Run Code Online (Sandbox Code Playgroud)

但这并不是最优的,并且随着两个表中的记录越来越多,它会变得越来越慢。