質問: ### 前提・実現したいこと 全銘柄の株価の時系列データをMySQLに取り込み保存したいと思ってます。 データ自体は某サイトよりcsvファイルを取り込み、MySQLへ読み込もうと思います。 そのcsvファイルは1ファイル1日分となっており、列方向に各銘柄の証券コード・銘柄名・始値・高値・安値・終値・出来高が、行方向に銘柄が入っています。 毎日そのcsvファイルを取り込み、保存しているデータに新しい日付のデータを追加していく形でデータベースを日々更新したいと思います。 保存したデータの使い方としては、主にテクニカル面でのスクリーニングに使います。 例えば「ここ二週間で株価130%以上になっている銘柄の一覧」や「移動平均の乖離が10%を超えている銘柄一覧」や「RSIが25以下の銘柄一覧」を表示するといった感じです。 また新しい手法のバックテストを行う為に、決まった数のデータではなく毎日追加した分だけデータ数が増えるデータベースにしたいと思ってます。 「株価時系列データ」という名前の全銘柄の時系列データが入ったデータベースを作ろうと思っていますが、ここでテーブルの作り方はどちらが良いのか教えて頂きたいと思います。 1.一銘柄=1テーブル 2.全銘柄=1テーブル 色々ネットを探してみましたが、「銘柄はそんなに変わるものではないので1銘柄=1テーブルのほうが良いのでは?」という意見もあれば「テーブルの数が大量になると検索に時間が掛かる」との意見もあり、どうなんだろう?となっています。 またそれぞれの形にも疑問があります。 《一銘柄=1テーブルを選んだ場合》 Q1.テーブル名を証券コード+企業名にしたいと思ってますが、4000銘柄以上あるので4000テーブル以上を[CREATE TABLE]文で一テーブルずつ作っていくしか方法がないのか? Q2.取り込もうとしているcsvファイルは全銘柄が1ファイルとなってますが、そのファイルを読み込んだ時に各テーブル(該当する銘柄のテーブル)にちゃんとデータが振り分けられるのか? Q3.上に書いたようにスクリーニングをする際は何らかの計算が発生するが、「〇〇の検索条件を満たした銘柄」として一覧で出力出来るのか? 《全銘柄=1テーブルを選んだ場合》 Q4.日付を含むと一銘柄に対して8項目のデータがあり、×4000の項目を一つずつ作っていく方法しかないのか? いくつもの質問が入ってしまいすみません。 データベース設計の中での一連の疑問ですのでご容赦ください。 また全く違う形でもスクリーニングに使えれば問題ありませんので上記以外でも「こんな形にしてみたら?」というものがあればぜひともご指導お願いします。 ### 発生している問題・エラーメッセージ エラーまで辿りつけていません。 しかしすぐにつまずくと思いますので、また質問させていただきます。 その際はお手柔らかにご指導お願いします。 ### 該当のソースコード 上記理由と同じ。 ### 試したこと 上記理由と同じ。 ### 補足情報(FW/ツールのバージョンなど) Windows10・mySQL8.0
回答: 仮に1万銘柄管理するとしても日に1万行、年間でもたった365万行増えるだけです。 ほとんど数値の列なのでデータ量も知れてます。 1テーブルで十分です。