3つのテーブルを持つデータベースがあります。
- エクイティ
- ストックスプリット
- 配当
株式と株式分割の間、および株式と配当の間には1対多の関係があります。各エクイティについて、株式分割と配当の数を示したいと思います。
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にインデックスが存在すると想定します。