根据外键关系编写以下多选查询的最优化方法是什么?
SELECT
a.id AS account,
(SELECT COUNT(*) FROM b WHERE b.a_id = a.id) AS b_count,
(SELECT COUNT(*) FROM c WHERE c.a_id = a.id) AS c_count,
(SELECT COUNT(*) FROM d WHERE d.a_id = a.id) AS d_count
FROM
a
查询结果应如下所示;
account| b_count | c_count | d_count |
---------------------------------------
1 | 3325 | 5004 | 8002 |
---------------------------------------
2 | 52353 | 3009 | 1202 |
为了透明,用于查询的行体积将大致为;
table a: 1,200 rows
table b: 500,000 rows
table c: 600,000 rows
table d: 300,000 rows
1条答案
按热度按时间tyky79it1#
试试这个,我猜表演会更好。
也许优化器本身会对您的请求进行这样的转换。
如果你有表b,c,d的index(a_id)-会更好。
如果您展示不同查询的性能比较,那将是很有趣的。你有足够多的数据来测试。