1,100 万行を超える大きな MySql テーブルがあります。これは単なる巨大なデータ セットであり、私のタスクは特定のルールに基づいてデータセットを分析できるようにすることです。
各行は特定の に属しcategory
ます。200 万の異なるカテゴリがあります。カテゴリのすべての行を取得し、それに対して操作を実行したいと考えています。
そのため、現在、次のことを行っています。
- 表から個別のカテゴリを選択します。
- 各カテゴリ: テーブルからフィールドを選択します WHERE
category
=category
列にインデックスが作成されていcategory
ますが、実行に非常に時間がかかりますStep 2
。これは主に膨大なデータセットによるものです。
別の方法として、GROUP BY 句を使用することもできますが、このような巨大なデータセットに対する GROUP BY はコストがかかる可能性があるため、特にデータセットの一部に対して分析を数回実行することを考えると、それほど高速になるかどうかはわかりません。ソートされたテーブルを永続的に保証する方法が役立ちます。
したがって、別の方法として、テーブルのみが事前に並べ替えられている場合、クエリを高速化できますcategory
。これで、テーブルを行ごとに読み取り、同じ操作をはるかに高速に実行できるようになりました。これは、1 つの行のすべての行がcategory
連続してフェッチされるためです。
データセット (MySql テーブル) は固定されているため、更新、削除、挿入操作は実行されません。によるデフォルトのソート順を維持する方法を確保できるようにしたいと考えていますcategory
。行のデフォルトのソート順を確実にするためのトリックを誰でも提案できますか。
おそらく、すべての行を読み取って新しいテーブルに書き直すか、この順序を保証する新しい主キーを追加しますか?