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で今年中にやっておきたいこと これさえやればDAU(日ごとのアクティブユーザ)が100人を超えるのでは?と思います。 まずは目的・内容を書いて、理由と考察を書きます。 目的 ユーザがゲーム …

[Meisyo] ゲーム内容刷新予定について

Work It!がある程度形ができてきたので、 Meisyoで今考えているゲーム内容の刷新を公開しておきます。 刷新内容 プログラム再構築  UI改修、高速化とセキュリティ向上のため、プログラムを再構 …

【教材紹介】前処理大全

前処理はデータ分析で重要な事項です。なぜなら、有用な特徴情報を上手く抽出できていなければどんなモデルであれ無用の長物です。ただ、前処理は体系だった学問としては存在せず、実務の中で学んでいくことが多いた …

[Meisyo] 2021年1月末のアップデート内容

はじめに アンケートに回答ありがとうございました。 今回も色々と追加いたしました。 更新内容 前回公式戦優勝チームの模擬戦用NPCの設定 公式戦優勝時に、完全コピーのNPCを作成する。 強いチームに対 …

オープンβテストを開始する(かも)

オープンβテスト用の機能作成が終わりました。 meisyo3_alpha(ざっくり試合機能)から、丸2か月ですか・・・なかなか掛かりました;つД`) イメージ図を記事の後ろの方に載せているので、興味が …