Open Ta9m1-N opened 8 months ago
クエリログを確認し、一覧表示に必要な要素以上のデータが取得されていたため、クエリ文の最適化が必要と判断した。プロンプトの回答から、QueryアノテーションによるJPQL記述で最低限のデータを取るように修正。 ordersテーブルだけでなくorderProductsテーブルのカラムも参照していたため、返り値の型がList\<Object[]>となってしまい、OrderServiceでの変換処理を追加した。
https://chat.openai.com/share/e8801005-09fb-45be-bb95-d2ac2a6ee000
概要
受注一覧ページの表示が重い。クエリログでは大量のクエリが実行されていたため、クエリの取捨選択と最適化ができないか調査し修正する。
不具合調査結果
一覧ページのクエリログを確認したところ、ordersテーブルから全取得とorderProductsテーブルからorderId毎に全取得のクエリがあった。不要なクエリ文はなかったが、orderProductsテーブルからorderId毎に全取得のクエリについては一覧に必要なカラムに対して取得カラムが特に多いため、改善の余地がある。
修正方針
一覧表示用に取得するカラムを最適化するため、OrderRepositoryにQueryアノテーションを付与したfindIndexメソッドを作成する。
タスクリスト
OrderController
OrderService
OrderRepository
追加修正
findIndex()メソッドの返り値の型がList\<Object[]>になるため、OrderServiceのfindIndex()内でList\<Object[]>からList\に変換する処理を記述する。
OrderService
Issue 情報更新