본문 바로가기
MySql

MySQL Count 하위 쿼리

by 베이스 공부 2021. 2. 5.
반응형

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

 

참조 페이지 https://stackoverflow.com/questions/11297759

 

 

반응형

댓글