sql >> Databáze >  >> RDS >> PostgreSQL

Jaká je definice sekundárního indexu v postgresql?

Definice primárních a sekundárních indexů jsou poněkud nepřesné.

Použití dvou populárních univerzitních textů jako reference:

Základy databázových systémů, Elmasri &Navathe definuje je jako:

Databázové systémy:Kompletní kniha, Garcia-Molina et. al definuje je jako:

Některé vlastnosti, které platí pro obě výše uvedené definice:

  • primární klíče mohou být primárními indexy
  • na jednu tabulku může být nejvýše 1 primární index
  • primární indexy jednoznačně určují, kde je záznam ve fyzickém úložišti uchováván.
  • Všechny ostatní indexy jsou klasifikovány jako sekundární.

Pokud však umístění záznamů v datovém souboru není určeno žádným polem, nelze sestavit primární index.

U setříděných souborů má tedy smysl mluvit o primárním indexu (což by byl seznam polí, na kterých je řazení založeno). Nemohu najít další příklady fyzických souborových struktur, kde lze vytvořit primární index.

Postgresql využívá strukturu haldy pro fyzické úložiště záznamů. Hromady nejsou seřazeny (upozornění na slovní hříčku:jsou tříděny). Proto jsou i primární klíče implementovány pomocí sekundárních indexů a jako takové jsou všechny indexy v Postgresql sekundární.

Jiné systémy RDBMS dělají implementujte formáty úložiště, které podporují primární indexy:

Jazyk v dokumentaci Postgres je nepřesný.

To je pravda.

To není důvod, proč jsou všechny indexy v Postgresql sekundární. Primární indexy mohou být také uloženy odděleně od hlavní datové oblasti tabulky.



  1. Zkuste znovu zablokovat MySQL / SQLAlchemy

  2. Jak dosáhnout výchozí hodnoty, pokud je hodnota sloupce NULL?

  3. Jak formátovat datum z časového razítka v PHP?

  4. Rails:Přidání migrace pro přidání pole (výchozí prázdné)