質問: pd.read_sql_query(sql=f'select * from table', con=conn, index_col='time') ``` 直接の回答ではなくても、この種類のデータならこのSQLを使った方がいいという回答でも大変助かります。
回答: 一般的なデータベースの設計論というのは、事務処理的なアプリケーションが前提となっているというか、例えば正規化はデータの整合性を保つためのもので、速くするためのものではありませんし、primary key (というか index) は 24 万件の中から特定のものを素早く探し出すためのもので、全件を取り出すには当然それだけの時間がかかります。また、データをすべて読み込むにはデータベース側だけでなく、python 側で受け取ったデータをメモリ上に配列として展開する必要がある訳で、むしろこっちに時間がかかってる可能性もあります。 とりあえず「python データ処理 高速化」でググったらこんなのが引っかかりました。 * pandasで1000万件のデータの前処理を高速にするTips集 - Qiita * 今すぐ使えるpandas高速化テクニック - Qiita * どこまで速くできる? 達人に学ぶPython超高速データ分析~PyData.Tokyo Meetup #4イベントレポート (1/3):CodeZine(コードジン) * うわっ...私のpandas、遅すぎ...?って時にやるべきこと(先人の知恵より) - Lean Baseball いずれにせよ、一般的なアプリケーションであれば高速化のコツは「サボること」です。例えば最初の 500 件だけ表示するとか、本当に必要になるまで計算しないとか、以前の計算結果を覚えておいて差分だけ計算するとか。ですが、おそらく MagMag さんの場合はガチで全部のデータを使って計算したいのでしょうから、頑張って計算するしかないのでしょうし、2GB のデータはそれなりに大きくてまともに処理したら時間がかかって当たり前、という感覚は持っておいた方がいいかと思います。 あとは、愚直にデータ構造とアルゴリズムを工夫することでしょうね。 * Pythonプログラムが遅い!高速化したい!そんな時は... - Qiita * pythonの高速化のために、用途別にcollection型(list/tuple/dictionary/set)の計算量をまとめる - Qiita 「ハイパフォーマンスPython」なんて本もあるようです。