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.
Redshift permite crear clave primaria
create table user (
id int ,
phone_number int,
primary key(id))
pero como Redshift no impone estas restricciones, la clave principal acepta valores duplicados.
artículo adjunto sobre ese tema
http://www.sqlhaven.com/amazon-redshift-what-you-need-to-think-before-defining-primary-key/
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");