我收到了这个问题:
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