0
私は3つの異なるMySQLテーブルからいくつかの列を3つの異なるデータフレームに読み込もうとしています。pandas read_sqlが異常に遅い
データベースから読み込むのに時間がかかりませんが、実際にデータフレームに入れるのはかなり遅いです。
start_time = time.time()
print('Reading data from database...')
from sqlalchemy import create_engine
q_crash = 'SELECT <query string> FROM table1'
q_vehicle = 'SELECT <query string> table2'
q_person = 'SELECT <query string> FROM table3'
engine = create_engine('mysql+pymysql://user:[email protected]:port/dbasename')
print('Database time: {:.1f}'.format(time.time() - start_time))
crash = pd.read_sql_query(q_crash, engine)
print('Read_sql time for table 1: {:.1f}'.format(time.time() - start_time))
vehicle = pd.read_sql_query(q_vehicle, engine)
print('Read_sql time for table 2: {:.1f}'.format(time.time() - start_time))
person = pd.read_sql_query(q_person, engine)
print('Read_sql time for table 3: {:.1f}'.format(time.time() - start_time))
出力:
Reading data from database...
Database time: 0.0
Read_sql time for table 1: 13.4
Read_sql time for table 2: 30.9
Read_sql time for table 3: 49.4
はこの正常ですか?テーブルはかなり大きく、テーブル3は601,000以上の行です。しかし、パンダはread_csvを使うたびに大きなデータセットを処理しています。
この表の中から読んでいますかビュー? – agold
コマンドラインから、またはMySQLワークベンチのようなツール(Pythonスクリプトが実行されているのと同じマシンで実行されている)からクエリを実行すると、どのくらい時間がかかりますか? – scomes
私はビューを作成したことは一度もなく、何も知らないので、テーブルから読んでいると仮定します。 @scomes、コマンドラインから同じクエリを実行すると、1秒未満で完了します。 – ale19