MySQL Count子查询

Jim*_*mmy 3 mysql sql subquery aggregate-functions

我有一个包含3个表的数据库:

  • 股市
  • stocksplits
  • 分红

股票和股票之间以及股票和股息之间存在一对多的关系.对于每个股权,我想显示股票分割和股息的数量:

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
Run Code Online (Sandbox Code Playgroud)

该查询似乎运行正常,但我怀疑它是低效的.怎样才能更快地重构?没有DBMS(通过.net到MySQL服务器的SQL查询),假设索引存在于每个表的主ID上.

Hen*_*ine 10

计算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
Run Code Online (Sandbox Code Playgroud)