15,000,000 レコードのテーブルがあります。これらのレコードは、特定の一致フィールドに基づいて相互に関連付けることができます (通常、1 つのグループで最大 3 つまたは 4 つ)。各レコードには日付も関連付けられていますが、この日付はテーブルにロードされた日付/順序と必ずしも相関しているわけではありません。
これらのレコードは、データベース内の他のレコードを更新するために定期的に使用されます。ただし、私は 1 つのグループの LATEST レコードだけに関心があり、1,500 万レコード (別の 1,000 万レコードを更新している) では、他のすべてを無視するようにしたいと考えています。また、最新のレコードに「更新済み」フラグが既にある場合は、更新をスキップしたいと考えています。
このようなビューを使用して、各グループ内の最新のレコードを収集しています。
SELECT a, b, c, max(scan.timestamp) AS latest_scan
FROM scan
GROUP BY a, b, c;
次にWHERE
、my で句を使用UPDATE
して、updated フラグを持つレコードを無視します。
これだけ多くのレコードがあるので、ビューを使用しても問題ありませんか? パフォーマンスを向上させるために実際のインデックス可能なテーブルをその場で作成し始める人を見てきましたが、それにはまだ時間がかかると感じています。これは私が恩恵を受けることができるものですか?