group by を使用し、where 条件を設定しない場合、mysql はすでにテーブル全体を読み取っています。また、データが数百万ある場合、テーブル内の各 a の合計数を直接 sum を使用してカウントすることは個人的にお勧めしません。おすすめの最適化はこれです。 1. スケジュールされたタスク、一時テーブル、統計テーブルを確立します 2. 一定量のデータを定期的に読み取り、そのデータの統計情報を統計テーブルに記録し、一定量のデータの最後の ID 値を一時テーブル。このidは次回読み込み時の条件として使用されます。
group by を使用し、where 条件を設定しない場合、mysql はすでにテーブル全体を読み取っています。また、データが数百万ある場合、テーブル内の各 a の合計数を直接 sum を使用してカウントすることは個人的にお勧めしません。おすすめの最適化はこれです。
1. スケジュールされたタスク、一時テーブル、統計テーブルを確立します
2. 一定量のデータを定期的に読み取り、そのデータの統計情報を統計テーブルに記録し、一定量のデータの最後の ID 値を一時テーブル。このidは次回読み込み時の条件として使用されます。
このセグメント化された統計は 2 つの最適化条件を満たすことができます
まずフィールド A にインデックスを追加しましょう
MySQL で GROUP BY を最適化する方法
複合インデックス (a, b) を作成し、両方の SQL がインデックス スキャンを実行します
さらに、統計 SQL は特別なレポート ライブラリで実行する必要があり、時間指定およびセグメント化された統計も実行する必要があります