次のシナリオでは、検索でユーザーID値のリスト(1、2、3、4、5、6など)が返されます。検索を再度実行すると、しばらくすると結果が変わることが保証されます。 。ただし、将来使用するために検索結果のインスタンスを保存する必要があります。
現在の実装(レガシー)があります。これは、条件を使用してsearch_idのレコードを作成し、関連付けられたsearch_idを使用して返されるすべての行を別のテーブルに挿入します。
table search_results
search_id unsigned int FK, PK (clustered index)
user_id unsigned int FK
このテーブルは数百万のレコードに成長しているため、これは受け入れられないアプローチです。テーブルをパーティション分割することを検討しましたが、どちらの場合も多数のパーティション(1000)があります。
他の場所で使用されない限り、検索結果が期限切れになる既存のテーブルを最適化したため、すべての検索結果は他の場所で参照されます。
現在のスキーマでは、結果をシリアル化された配列またはXMLとして保存できません。検索結果情報を効率的に保存し、レコード数に煩わされることなく、後で効率的にアクセスできるようにしたいと考えています。
編集:回答ありがとうございます。検索自体の実行に問題はありませんが、この場合、検索の結果セットは受信者リストに使用され、何度も使用されます。保存の目的は次のとおりです。特定の時間のデータのスナップショットを正確に取得します。