Pro jednoduché kontroly rovnosti (=
), index B-stromu na varchar
nebo text
sloupec je jednoduchý a nejlepší volba. Určitě to hodně výkonu pomáhá .
Samozřejmostí je index B-Stromu na jednoduchém integer
má lepší výkon. Pro začátek srovnání jednoduchého integer
hodnoty jsou o něco rychlejší. Ale co je důležitější, výkon je také funkcí velikosti indexu. Větší sloupec znamená méně řádků na datovou stránku, znamená to, že je třeba přečíst více stránek ...
Od HomeAddress
je stěží unikátní, není to dobrý přirozený primární klíč. Důrazně doporučuji použít náhradní primární klíč namísto. serial
sloupec
je pro to jasná volba. Jeho jediným účelem je mít jednoduchý a rychlý primární klíč pro práci.
Pokud máte jiné tabulky odkazující na tuto tabulku, bude to ještě efektivnější. Namísto duplikování dlouhého řetězce pro sloupec cizího klíče potřebujete pouze 4 bajty pro celý sloupec. A nepotřebujete tolik kaskádových aktualizací, protože adresa se nutně změní, zatímco náhradní pk může zůstat stejný (ale nemusí, samozřejmě).
Vaše tabulka může vypadat takto:
CREATE TABLE resident (
resident_id serial PRIMARY KEY
,address text NOT NULL
-- more columns
);
CREATE INDEX resident_adr_idx ON resident(address);
Výsledkem jsou dva indexy B-Stromu. Jedinečný index na resident_id
a prostý index na address
.
Další informace o indexech v příručce
.
Postgres nabízí spoustu možností – ale pro tento jednoduchý případ už žádné další nepotřebujete.