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

W jaki sposób rekordy o stałej długości i pola o stałej długości zwiększają wydajność bazy danych?

Uproszczone, koncepcyjne wyjaśnienie niespecyficzne dla bazy danych:

Gdy z góry znana jest maksymalna możliwa długość rekordu, koniec rekordu/początek następnego rekordu można znaleźć w stałym czasie. Dzieje się tak dlatego, że ta lokalizacja jest obliczana za pomocą prostego dodawania, bardzo analogicznie do indeksowania tablicy. Wyobraź sobie, że używam int s jako wskaźniki do rekordów, a rozmiar rekordu jest określoną gdzieś stałą liczbą całkowitą. Następnie, aby przejść z bieżącej lokalizacji rekordu do następnego:

int current_record = /* whatever */;
int next_record = current_record + FIXED_RECORD_SIZE;

To wszystko!

Alternatywnie, używając rekordów i pól zakończonych łańcuchem (lub w inny sposób rozdzielonych), można sobie wyobrazić, że następne pole/rekord jest znajdowane przez skanowanie w czasie liniowym, które musi sprawdzać każdy znak, dopóki nie zostanie znaleziony ogranicznik. Jak poprzednio,

char DELIMITER = ','; // or whatever
int current_record = /* whatever */;
int next_record = current_record;
while(character_at_location(next_record) != DELIMITER) {
    next_record++;
}

Może to być uproszczona lub naiwna wersja implementacji w świecie rzeczywistym, ale ogólna idea nadal jest aktualna:nie można łatwo wykonać tej samej operacji w stałym czasie, a nawet gdyby był to stały czas, prawdopodobnie nie będzie tak szybka jak wykonanie pojedynczej operacji dodawania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zagnieżdżona relacja Oracle SQL na jednym poziomie

  2. Oracle SQL plus jak zakończyć polecenie w pliku SQL?

  3. Zapytanie Oracle SQL do wylistowania wszystkich schematów w bazie danych

  4. Oracle SQL Dev, jak obliczyć liczbę dni tygodnia między 2 datami

  5. Tworzenie nowej bazy danych i nowe połączenie w Oracle SQL Developer