MySQL Query三个左连接需要很长时间才能完成

时间:2012-07-10 00:22:40

标签: mysql

我收到了这个问题:

SELECT SQL_NO_CACHE a.tb1_id, count( DISTINCT b.tb2_id ) AS tb2_count, count( DISTINCT c.tb3_id ) AS tb3_count
FROM tb1 a
LEFT JOIN tb2 b ON a.tb1_id = b.tb1_id
LEFT JOIN tb3 c ON a.tb1_id = c.tb1_id
GROUP BY a.tb1_id
ORDER BY a.tb1_id ASC;

tb1有2条记录。

tb2有50,514条记录。 tb1_id->有一个索引

tb3有3,244条记录。 tb1_id->有一个索引

并且需要大约222秒才能完成。

真的很奇怪...如果我只有一个左派联盟,它会更快但是当我做2计数与2左联接时,需要很多时间。

有人可以帮我解释一下。

感谢。

结果:

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
1   SIMPLE  a   index   NULL    PRIMARY     4   NULL    2   Using index
1   SIMPLE  b   ref     ixns1   ixns1   4   db.a.tb1_id     25257   Using index
1   SIMPLE  c   ref     ixns2   ixns2   4   db.a.tb1_id     556     Using index

0 个答案:

没有答案