sortkey redshift foreign example distkey create sql amazon-web-services indexing amazon-redshift

sql - foreign - Cómo crear un índice en Amazon Redshift



foreign key redshift (3)

Estoy tratando de crear índices en Amazon Redshift pero recibí un error

create index on session_log(UserId);

UserId es un campo entero.


Puede definir restricciones, pero solo será informativo, como dice Amazon: Amazon Redshift no las impone. No obstante, las claves primarias y las claves externas se utilizan como sugerencias de planificación y deben declararse si su proceso ETL o algún otro proceso en su aplicación impone su integridad.

Algunos servicios como tuberías con modo de inserción (REPLACE_EXISTING) necesitarán una clave principal definida en su tabla.

Para otros propósitos de rendimiento, la respuesta de Stuart es correcta.



Si intenta crear un índice (con un nombre) en una tabla de desplazamiento al rojo:

create index IX1 on "SomeTable"("UserId");

Recibirás el error

Se produjo un error al ejecutar el comando SQL: crear el índice IX1 en "SomeTable" ("UserId") ERROR: El comando SQL "crear el índice IX1 en" SomeTable "(" UserId ")" no se admite en las tablas de desplazamiento al rojo.

Esto se debe a que, al igual que otros almacenes de datos , Redshift usa almacenamiento en columnas , y como resultado, muchas de las técnicas de indexación (como agregar índices no agrupados) que se usan en otros RDBMS no son aplicables.

Sin embargo, tiene la opción de proporcionar una única clave de clasificación por tabla, y también puede influir en el rendimiento con una clave de distribución para fragmentar sus datos, y seleccionar las codificaciones de compresión adecuadas para cada columna para minimizar los gastos generales de almacenamiento y E / S.

Por ejemplo, en su caso, puede elegir usar UserId como clave de clasificación:

create table if not exists "SomeTable" ( "UserId" int, "Name" text ) sortkey("UserId");

Es posible que desee leer algunos cebadores like these