Możesz rozwiązać ten problem za pomocą pewnej denormalizacji:
- Utwórz dodatkową tabelę, która zawiera te same klucze pkey i stany, co tabela danych
- Dodaj i wypełnij kolumnę grupy statusu, która będzie rodzajem podklucza, który sam numerujesz (autoinkrementacja oparta na 1 w stosunku do pojedynczego statusu)
Gdy nie musisz filtrować, możesz wygenerować rand #s na pkey, jak wspomniałeś powyżej. Kiedy musisz filtrować, wygeneruj randy według StatusPkeys określonego statusu, który Cię interesuje.
Istnieje kilka sposobów na zbudowanie tego stołu. Możesz mieć procedurę, którą wykonujesz z przerwami, lub możesz to zrobić na żywo. Ta ostatnia byłaby jednak hitem wydajności, ponieważ obliczanie StatusPkey może być drogie.