반응형
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
반응형
'MySql' 카테고리의 다른 글
MySQL mysql having and where clause on the same query (0) | 2021.02.06 |
---|---|
MySQL 프로 시저 # 1351의 MySQL 오류-뷰의 SELECT에 변수 또는 매개 변수가 포함됨 (0) | 2021.02.06 |
MySQL Android에서 온라인 MySQL 데이터베이스에 액세스하는 방법은 무엇입니까? (0) | 2021.02.05 |
MySQL error connecting to MYSQL (0) | 2021.02.05 |
MySQL에서 .sql 파일을 실행하려면 (0) | 2021.02.05 |
댓글