我有一个包含 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 上。