いくつかの非正規化でこれを解決できます:
- データテーブルと同じpkeyとステータスを含むセカンダリテーブルを作成します
- 自分で自動番号を付ける一種のサブpkeyとなるステータスグループ列を追加して入力します(単一のステータスに対する1ベースの自動インクリメント)
フィルタリングする必要がない場合は、上記のようにpkeyでrand#を生成できます。フィルタリングする必要がある場合は、関心のある特定のステータスのStatusPkeysに対してランドを生成します。
このテーブルを作成する方法はいくつかあります。間隔を置いて実行するプロシージャを作成することも、ライブで実行することもできます。 StatusPkeyの計算にはコストがかかる可能性があるため、後者はパフォーマンスに影響を与えます。