sql >> Base de Datos >  >> RDS >> PostgreSQL

índice postgresql en la columna de cadena

Para comprobaciones de igualdad simples (= ), un índice B-Tree en un varchar o text columna es simple y la mejor opción. Ciertamente ayuda al rendimiento mucho .

Por supuesto, un índice B-Tree en un integer simple se desempeña mejor Para empezar, comparar integer simple valores es un poco más rápido. Pero lo que es más importante, el rendimiento también es una función del tamaño del índice. Una columna más grande significa menos filas por página de datos, significa que se deben leer más páginas...

Dado que la HomeAddress no es único de todos modos, no es una buena clave primaria natural. Recomiendo encarecidamente utilizar una clave principal sustituta en cambio. Un serial columna es la opción obvia para eso. Su único propósito es tener una clave primaria simple y rápida para trabajar.

Si tiene otras tablas que hacen referencia a dicha tabla, esto se vuelve aún más eficiente. En lugar de duplicar una cadena larga para la columna de clave externa, solo necesita los 4 bytes para una columna de enteros. Y no necesita tantas actualizaciones en cascada, ya que una dirección está obligada a cambiar, mientras que un pk sustituto puede permanecer igual (pero no tiene que hacerlo, por supuesto).

Su tabla podría verse así:

CREATE TABLE resident (
   resident_id serial PRIMARY KEY
  ,address text NOT NULL
   -- more columns
);

CREATE INDEX resident_adr_idx ON resident(address);

Esto da como resultado dos índices B-Tree. Un índice único en resident_id y un índice simple en address .

Más información sobre índices en el manual .
Postgres ofrece muchas opciones, pero no necesita más para este caso simple.