Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jakieś wady flag bitowych w kolumnach bazy danych?

Jeśli masz tylko kilka ról, nie zapisujesz nawet żadnego pamięci spacja w PostgreSQL . integer kolumna używa 4 bajtów, a bigint 8 bajtów. Oba mogą wymagać dopełnienia wyrównania:

  • Rozumienie rozmiarów wierszy Postgres
  • Obliczanie i oszczędzanie miejsca w PostgreSQL

boolean kolumna wykorzystuje 1 bajt. W efekcie możesz zmieścić cztery lub więcej kolumn logicznych dla jednej integer kolumna, osiem lub więcej dla bigint .

Weź również pod uwagę, że NULL wartości używają tylko jednego bitu (uproszczonego) w bitmapie NULL.

Poszczególne kolumny są łatwiejsze do odczytania i indeksowania . Inni już to skomentowali.

Nadal możesz używać indeksów wyrażeń lub indeksów częściowych, aby obejść problemy z indeksami („niepodlegające sargowaniu”). Uogólnione stwierdzenia, takie jak:

baza danych nie może używać indeksów w zapytaniu takim jak to

lub

Te warunki nie podlegają SARG!

nie do końca prawdziwe - może w przypadku niektórych innych RDBMS, w których brakuje tych funkcji.
Ale po co omijać, skoro można całkowicie uniknąć problemu?

Jak wyjaśniłeś, mówimy o 6 różnych typach (może więcej). Idź z indywidualnym boolean kolumny. Prawdopodobnie zaoszczędzisz nawet miejsce w porównaniu z jednym bigint . W tym przypadku zapotrzebowanie na miejsce wydaje się nieistotne.

Jeśli te flagi wykluczały się wzajemnie , możesz użyć jednego kolumna typu enum lub małą tabelę przeglądową i klucz obcy do niej odwołujący się. (Wykluczono w aktualizacji pytania.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekaż wartości odczytane z pliku jako dane wejściowe do zapytania SQL w Oracle

  2. (+) =operator w Oracle sql, gdzie klauzula

  3. Skrypty uruchamiania i zatrzymywania EBS R12

  4. Jak kontynuować przetwarzanie pętli kursora po wystąpieniu wyjątku w Oracle?

  5. Jak wycofać poprawkę po nieudanej fazie przełączania w R12.2?