私のデータをmySQLテーブルにレイアウトするための最良の形式を考えています。これにより、phpでさらに利用される毎日の値の配列を収集するために最速の方法でクエリを実行できます。
これまでのところ、次のようにテーブルをレイアウトしました。
item_id price_date price_amount
1 2000-03-01 22.4
2 2000-03-01 19.23
3 2000-03-01 13.4
4 2000-03-01 14.95
1 2000-03-02 22.5
2 2000-03-02 19.42
3 2000-03-02 13.4
4 2000-03-02 13.95
item_id をインデックスとして定義します。
また、私は使用しています:
"SELECT DISTINCT price_date FROM table_name"
日付の一意のリストを含む配列を取得します。
さらに、ループ内にあるコードの部分 (および最適化の質問の焦点) は、現在次のように記述されています。
"SELECT price_amount FROM table_name WHERE item_id = 1 ORDER BY price_date"
この 2 番目の "SELECT" ステートメントは、実際には、要求された各 item_id の毎日の価格を選択/配列に格納するループ内にあります。
すべてが現在機能しており、mySQL からデータを適切にプルしていますが、上記の「SELECT」ステートメントは両方とも、実行ごとに完了するまでに約 4 ~ 5 秒かかり、100 以上の製品をループして要約を作成すると、合計すると非常に非効率的/遅い情報システム。
結果をより速く取得するために、mySQL テーブルや SELECT ステートメントを構造化するより効率的な方法はありますか? おそらく、別の列に別のインデックスを定義していませんか? EXPLAIN コマンドを使用してクエリごとに情報を返しましたが、EXPLAIN 情報を使用してクエリの効率を高める方法がわかりません。
支援できる可能性のある mySQL ウィザードについて、事前に感謝します。