RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 Meisyo Python

for内で選手個人データをSQLで呼び出すより、辞書型を利用した方が読み込みは早い

投稿日:

for内でSQLを呼び出すと遅い…。
自作野球ゲームMeisyoでは、明示的にデータを呼び出すためにfor内でSQLを利用していました。

CDs = {} # Cardデータ(選手id, 選手データ)を入れた辞書
for key in CDs:
    CD = CDs[key] # 選手IDで選手カードデータを呼び出し
    CD_BR = read_bt(key) # 打撃データ呼び出しSQL
    CD_PR = read_pc(key) # 投球データ呼び出しSQL
    print("キャラクター結果")

今回の改修で、下記のように書き換えました。

CDs = {} # Cardデータ(選手id, 選手データ)を入れた辞書
CD_BRs = reads_bt(my_id) # my_idが所持するカードの打撃データ(選手id, 打撃データ)を入れた辞書
CD_PRs = reads_pc(my_id) # my_idが所持するカードの投球データ(選手id, 投球データ)を入れた辞書
for key in CDs:
    CD = CDs[key] # 選手IDで選手カードデータを呼び出し
    CD_BR = CD_BRs[key] # 打撃データ呼び出しSQL
    CD_PR = CD_PRs[key] # 投球データ呼び出しSQL
    print("キャラクター結果")

こうすることで、「負荷の小さいSQLを何回も実行する」のではなく「1回で全てを取り切り、分割して表示する」ことになります。
ただし、辞書型を利用するため、あまりにも対象が多すぎるクエリの場合はサーバーのメモリ許容量に達しかねないので注意してください。

-Web制作, Meisyo, Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Meisyo+とMeisyoのアクティブ人口比較

野球ゲームMeisyo+リリースから3か月目に入りました。 アクティブ人数(日ごとのログイン人数:DAU)を比較したところMeisyoを超えました。 IP等を見た限り、並行で遊んでいただいている方が多 …

【教材紹介】XAI(説明可能なAI)

今日では、さまざまなデータが収集され、判断の自動化や数値予測の高度化が行われています。 そのAIの判断、どう説明すればいいかわかりますか? エクセルのようなテーブルデータだけでなく、画像やテキストに対 …

[Meisyo+] リアルな試合処理への変更

Meisyo+でアンケートを行っています。 そのご意見をいただいた中で、よりリアルな試合進行にするために試合処理を変更しました。 どんな感じになったの? 得点が決勝点になりえる時(例:10回裏同点、1 …

(VPSでつくる) WinSCPでFTP接続

連載第十回目です。 これまではVPSサーバーに対し、viエディタで色々なファイルを編集してきました。 ただ、今後はFlaskアプリなど、かなり作り込んだサービスの導入テストを行いますので、一ファイルず …

TensorFlowまで到達

ちょいちょい数式に詰まりながらも、DeeplearningのフレームワークTensorFlowの学習まで漕ぎ着けました。 一番困ったのは「説明無しで数式使うよ!」 マジやめてください・・・まあ勉強する …