PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wydajność bazy danych:filtrowanie według kolumny a osobna tabela

Jest to powszechny problem w projektowaniu baz danych:pytanie, czy oddzielić czy „zarchiwizować” rekordy, które nie są już „aktywne”.

Najczęstsze podejścia to:

  • Wszystko w jednej tabeli, odpowiednio oznacz zamówienia jako „kompletne”. Plusy:Najprostsze rozwiązanie (zarówno pod względem kodu, jak i struktury), dobra elastyczność (np. łatwe do "wskrzeszenia" zamówień). Minusy:Tabele mogą być dość duże, co jest problemem zarówno dla zapytań, jak i np. kopie zapasowe.
  • Zarchiwizuj stare rzeczy do osobnej tabeli. Rozwiązuje problemy z pierwszego podejścia, kosztem większej złożoności.
  • Użyj tabeli z partycjonowaniem według wartości. Oznacza to, że logicznie (dla aplikacji) wszystko jest w jednej tabeli, ale za kulisami DBMS umieszcza rzeczy w oddzielnych obszarach w zależności od wartości w jakiejś kolumnie (kolumnach). Do partycjonowania prawdopodobnie użyjesz kolumny „zakończono” lub „data zakończenia zamówienia”.

Ostatnie podejście łączy dobre części dwóch pierwszych, ale wymaga wsparcia w DBMS i jest bardziej złożone w konfiguracji.

Uwaga:

Tabele przechowujące tylko „zarchiwizowane” dane są powszechnie nazywane „tabelami archiwalnymi”. Niektóre DBMS zapewniają nawet specjalne silniki przechowywania dla tych tabel (np. MySQL), które są zoptymalizowane pod kątem szybkiego wyszukiwania i dobrej wydajności przechowywania, kosztem powolnych zmian/wstawek.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy lepiej jest utworzyć indeks przed wypełnieniem tabeli danymi, czy po umieszczeniu danych?

  2. Niestandardowy komunikat o błędzie dla ograniczenia listy Postgresql CHECK IN

  3. O korzyściach z posortowanych ścieżek

  4. Wyjaśnienie polecenia PostgreSQL VALUES

  5. Jak ZMIENIĆ tabelę PostgreSQL i uczynić kolumnę unikalną?