以下のようなテーブルがあるとします。
親テーブル
ID | 値 |
---|---|
1 | a |
2 | b |
子テーブル
ID | 親ID | 登録日 |
---|---|---|
1 | 1 | 2018-1-1 |
2 | 1 | 2020-1-1 |
3 | 2 | 2019-1-1 |
4 | 2 | 2021-1-1 |
上記から登録日を期間を条件に親テーブルのIDと値を抽出したいです。
そのために以下のサブクエリを利用するSQLを作成しましたが、性能的に問題があると考えています。
sql
1SELECT 2 a.ID, 値 3FROM 4 親テーブル a, 5 (SELECT b.親ID AS 親ID FROM 子テーブル b WHERE b.登録日 BETWEEN %条件% AND %条件% GROUP BY 親ID) c 6WHERE 7 a.ID = c.親ID
別の方法として親テーブルに登録日_FROM、登録日_TOというカラムを付与し、
こちらを条件にする方法も考えました。
(値は子テーブルからトリガーなどで更新する想定)
ID | 値 | 登録日_FROM | 登録日_TO |
---|---|---|---|
1 | a | 2018-1-1 | 2020-1-1 |
2 | a | 2019-1-1 | 2021-1-1 |
以下質問となります。
- サブクエリを利用せずにSQLを組むことは可能でしょうか。
- 検索の性能を上げるために親テーブルに子テーブルの情報を保持するような設計は
どのような検索をすればよいかわからず、こちらに質問いたしました。
ご教授いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/14 05:34
2018/10/14 05:59