mysql – 查找两列之间的交集

前端之家收集整理的这篇文章主要介绍了mysql – 查找两列之间的交集前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图找到MySQL中同一个表中两列之间的(集)交集.我基本上想要找到具有表格col2中的col1元素或表格col1中的col2元素的行.

最初我尝试过:

SELECT * FROM table WHERE col1 IN (SELECT col2 FROM table)

这在语法上是有效的,但运行时间太长了.表中的行数约为300,000,并且未对两个列进行索引.我假设运行时间是n ^ 2或n ^ 3,这取决于MysqL是否为表的每个元素再次执行子查询,或者它是否临时存储子查询的结果.

接下来我想到了两列的并集并删除了不同的元素,因为如果一个元素在这个联合中出现多次,那么它必须存在于两列中(假设两列只包含不同的元素).

是否有更优雅(即更快)的方法来查找同一个表的两列之间的集合交集?

最佳答案
SELECT t1.*
    FROM table t1
        INNER JOIN table t2
            ON t1.col1 = t2.col2

在col1和col2上创建索引对于帮助此查询也有很长的路要走.

猜你在找的MySQL相关文章