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

Jaka jest definicja indeksu wtórnego w postgresql?

Istnieje pewien brak precyzji w definicjach indeksów pierwotnych i wtórnych.

Używając dwóch popularnych tekstów uniwersyteckich jako odniesienia:

Podstawy systemów baz danych, Elmasri i Navathe definiuje je jako:

Systemy baz danych:The Complete Book, Garcia-Molina i in. al definiuje je jako:

Niektóre właściwości, które są prawdziwe dla obu powyższych definicji:

  • klucze podstawowe mogą być indeksami podstawowymi
  • może być co najwyżej 1 główny indeks na tabelę
  • główne indeksy jednoznacznie określają, gdzie zapis jest przechowywany w fizycznej pamięci masowej.
  • Wszystkie inne indeksy są klasyfikowane jako drugorzędne.

Jeśli jednak umieszczenie rekordów w pliku danych nie jest określone przez żadne pole, nie można skonstruować indeksu podstawowego.

Dlatego w przypadku posortowanych plików sensowne jest mówienie o indeksie podstawowym (który byłby listą pól, na których opiera się sortowanie). Nie mogę znaleźć innych przykładów fizycznych struktur plików, w których można by skonstruować indeks podstawowy.

Postgresql wykorzystuje strukturę sterty do fizycznego przechowywania rekordów. Sterty nie są sortowane (uwaga kalambur:są sortowane). Dlatego nawet klucze podstawowe są implementowane przy użyciu indeksów drugorzędnych i jako takie wszystkie indeksy w Postgresql są drugorzędne.

Inne systemy RDBMS do zaimplementuj formaty przechowywania, które obsługują indeksy podstawowe:

Język w dokumentacji Postgresa jest nieprecyzyjny.

To prawda.

Nie dlatego wszystkie indeksy są w Postgresql drugorzędne. Indeksy podstawowe mogą być również przechowywane oddzielnie od głównego obszaru danych tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pakiet wywołań funkcji postgreSQL

  2. Indeksy funkcjonalne Rails Postgres

  3. Jak zwrócić wartość z obietnicy?

  4. Heroku Postgres:psql:FATAL:brak wpisu pg_hba.conf dla hosta

  5. Napisz Postgres Pobierz lub utwórz zapytanie SQL