PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво е определението за вторичен индекс в postgresql?

Има известна липса на точност в дефинициите на първични и вторични индекси.

Използване на два популярни университетски текста като справка:

Основи на системите за бази данни, Elmasri &Navathe ги определя като:

Системи за бази данни:Пълната книга, Garcia-Molina et. ал ги определя като:

Някои свойства, които са валидни за двете дефиниции по-горе:

  • първичните ключове могат да бъдат първични индекси
  • може да има най-много 1 първичен индекс на таблица
  • първичните индекси определят еднозначно къде се съхранява запис във физическото хранилище.
  • Всички други индекси се класифицират като вторични.

Въпреки това, ако разположението на записите във файла с данни не се определя от нито едно поле, тогава първичен индекс не може да бъде конструиран.

По този начин за сортирани файлове има смисъл да се говори за първичен индекс (който би бил списъкът с полета, на които се основава сортирането). Не мога да намеря други примери за физически файлови структури, където може да бъде конструиран първичен индекс.

Postgresql използва структура на купчина за физическо съхранение на записи. Купчините не са сортирани (предупреждение за игра на думи:те са сортирани). Следователно дори първичните ключове се реализират с помощта на вторични индекси и като такива всички индекси в Postgresql са вторични.

Други RDBMS системи правят внедрите формати за съхранение, които поддържат първични индекси:

Езикът в документацията на Postgres е неточен.

Това е вярно.

Това не е причината всички индекси да са вторични в Postgresql. Първичните индекси също могат да се съхраняват отделно от основната област с данни на таблицата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate @Filter колекция от enum

  2. Как Cosh() работи в PostgreSQL

  3. Не може да се свърже със сървъра на PostgreSQL:не може да се свърже със сървъра:Разрешението е отказано

  4. PostgreSQL:таблица само за четене

  5. Активен запис:JSON заявка