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回で全てを取り切り、分割して表示する」ことになります。
ただし、辞書型を利用するため、あまりにも対象が多すぎるクエリの場合はサーバーのメモリ許容量に達しかねないので注意してください。