sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad är definitionen av sekundärt index i postgresql?

Det finns en viss brist på precision i definitionerna av primära och sekundära index.

Använder två populära universitetstexter som referens:

Fundamentals of Database Systems, Elmasri &Navathe definierar dem som:

Databassystem:The Complete Book, Garcia-Molina et. al definierar dem som:

Vissa egenskaper som gäller för båda definitionerna ovan:

  • primära nycklar kan vara primära index
  • det kan vara högst 1 primärt index per tabell
  • primära index bestämmer unikt var en post förvaras i fysisk lagring.
  • Alla andra index klassificeras som sekundära.

Men om placeringen av poster i datafilen inte bestäms av något fält, kan ett primärt index inte konstrueras.

För sorterade filer är det alltså meningsfullt att prata om det primära indexet (vilket skulle vara listan över fält som sorteringen är baserad på). Jag kan inte hitta andra exempel på fysiska filstrukturer där ett primärt index kan konstrueras.

Postgresql använder en heapstruktur för den fysiska lagringen för poster. Högar sorteras inte (ordleksvarning:de är sorterade). Därför är även de primära nycklarna implementerade med hjälp av sekundära index, och som sådana är alla index i Postgresql sekundära.

Andra RDBMS-system gör implementera lagringsformat som stöder primära index:

Språket i Postgres-dokumentationen är oprecis.

Detta är sant.

Det är inte därför alla index är sekundära i Postgresql. Primära index kan också lagras separat från tabellens huvuddataområde.



  1. Homebrew brew installera mysql ger ... Fel vid inställning av värdet '127.0.0.1' till 'server_id'

  2. MySQL:hur får man bara ett genomsnitt av positiva värden?

  3. SQL-fråga för att välja värdepar i en kolumn 1 som matchar något av två mönster i kolumn 2

  4. Fråga för att växla booleskt värde i MySQL