最近データベースを学んでいるものです。
現在テスト中のデータベースの対象テーブルは以下のように時系列と計測器の計測値データとなっております。
テーブル名:table01
計測時間 | 計測器1 | 計測器2 | … | 計測器1000 |
---|---|---|---|---|
2021-01-01 0:00:00 | 1.01 | 2.01 | … | 1.41 |
2021-01-01 0:01:00 | 1.01 | 2.01 | … | 1.41 |
… | … | … | … | … |
横持ちにしているのはデータ容量を少なくするためです。
計測ピッチは短いところで1分以下の時もあり、1年で20万行ほどになります(最大で10年程度)。
ここから例えば計測器1の1年分のデータを抽出しようとすると、どうしても初回(おそらく共有メモリに対象テーブルがないとき)に数秒~十数秒かかってしまいます。
ただ実際には初回からもっと高速にデータの抽出をして、時系列グラフの描画をしたいと考えております。
よく使うsql文は任意の期間を抽出する以下のようなものです。
postgresql
1select 測定器1 from table01 where 計測時間 >= '2021-01-01 0:00:00' and 計測時間 < '2022-01-01 0:00:00';
例えば以下のサイトの日経平均のチャートを見ると、"1日"、"1年"、"10年"等のタブを切り替えても、とても早くチャートが描画されます(1日の1分足が選択できるので、元データはかなり大きなデータだと思っております)。
日経平均 - マーケット|SBI証券
そこで質問なのですが、
こういったデータベースのテーブルの設計をする際は、高速にアクセスするためにそもそも初めから"1日"、"1年"、"10年"のテーブルを分けているのか、"10年"の大量の元データからその都度特別な方法で高速に"1年"、"5年"等のデータを抽出しているのか、どちらなのでしょうか。それとも他の方法があるのでしょうか。教えていただければ幸いです。
回答2件
あなたの回答
tips
プレビュー