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 
    


    标签:mysql
    声明

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    关注我们

    一个IT知识分享的公众号