【问题标题】:Slow SQL join on 5000 rows5000 行的慢速 SQL 连接
【发布时间】:2016-10-14 02:10:33
【问题描述】:

我在尝试检查不同测试之间的结果是否存在差异时遇到了问题。内部选择语句返回大约 5000 行,但连接不会在一分钟内完成。我预计输出约为 10 行。加入这么慢的任何原因?

select * from(
           select *
           from R inner join C
           on R.i = C.j
           where C.j in (2343,3423,4222,1124,2344)
) AS A,(
           select *
           from R inner join C
           on R.i = C.j
           where C.j in (2343,3423,4222,1124,2344)
) AS B
where A.x = B.x and
A.y = B.y and
A.result <> B.result

【问题讨论】:

    标签: mysql sql join


    【解决方案1】:

    我认为你可以用聚合做你想做的事:

    select x, y, group_concat(distinct result) as results
    from R inner join
         C
         on R.i = C.j
    where C.j in (2343, 3423, 4222, 1124, 2344)
    group by x, y
    having count(distinct result) > 1;
    

    对于这个查询,C(j)R(i) 上的索引会很有帮助。我也会将xy 添加到适当的索引中,但我不知道它们是从哪个表中梳理出来的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多