Muszę przechowywać tablicę bitów dla każdego rekordu tabeli, obsługując następujące operacje:
Testowanie, czy bit jest ustawiony, i ustawianie bitu (za pomocą SQL)
Zapytanie i ustawienie wartości za pomocą ADO 2.8 (nie ADO.NET)
Indeksowanie (w celu skorzystania z funkcji „indeksu obejmującego”)
Maksymalna liczba bitów przechowywanych w tej tablicy jest stała, ale może przekraczać 32 . Oznacza to, że prosta kolumna int nie zawsze działa.
Z tego, co widziałem do tej pory, moje opcje to:
- Użyj kilku kolumn int
- Użyj biginta (działa, dopóki liczba bitów wynosi <= 64)
- Użyj binarnego
- ?
Pierwsza opcja działałaby, ale wymaga sporo refaktoryzacji w kodzie, który uzyskuje dostęp do danych. Druga opcja to tylko tymczasowa ulga, a do tej pory nie jestem pewien, czy ADO działa tak dobrze z bigintem . Nie mam doświadczenia z binarnymi i nie znam innych opcji.
Jaki typ danych wybierzesz, biorąc pod uwagę wymagania?