加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql – 查找两列之间的交集

发布时间:2021-05-24 02:46:39 所属栏目:编程 来源:网络整理
导读:我试图找到MySQL中统一个表中两列之间的(集)交集.我根基上想要找到具有表格col2中的col1元素或表格col1中的col2元素的行. 最初我实行过: SELECT * FROM table WHERE col1 IN (SELECT col2 FROM table) 这在语法上是有用的,但运行时刻太长了.表中的行数约为3

我试图找到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上建设索引对付辅佐此查询也有很长的路要走.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读