mysql之MySQL Count子查询
mayingbao
阅读:49
2024-02-27 23:08:18
评论:0
我有一个包含3个表的数据库:
股票和股票分割之间,以及股票和股息之间存在一对多的关系。对于每个股票,我想显示股票分割和股息的数量:
SELECT equities.Symbol,
(SELECT COUNT(*)
FROM stocksplits
WHERE stocksplits.EquityID = equities.InstrumentID) as `# Splits`,
(SELECT COUNT(*)
FROM dividends
WHERE dividends.EquityID = equities.InstrumentID) as `# Dividends`
FROM equities
该查询似乎运行良好,尽管我怀疑它效率低下。如何将其重构为更快?没有DBMS(通过.net到MySQL服务器的SQL查询),假定每个表的主ID上都存在索引。
请您参考如下方法:
计算PK而不是*可能已经有所帮助:
SELECT equities.Symbol,
(SELECT COUNT(stocksplitsID)
FROM stocksplits
WHERE stocksplits.EquityID = equity.InstrumentID) as `# Splits`,
(SELECT COUNT(dividendsid)
FROM dividends
WHERE dividends.EquityID = equities.InstrumentID) as `# Dividends`
FROM equities
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。