Como criar um índice no Redshift Amazon

Estou a tentar criar índices no Redshift Amazon, mas recebi um erro.
create index on session_log(UserId);

UserId é um campo inteiro.

Author: StuartLC, 2015-08-19

3 answers

Se tentar criar um índice (com um nome) numa tabela Redshift:

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

Vais receber o erro

Ocorreu um erro ao executar o comando SQL: criar o índice IX1 em "SomeTable"("UserId") Erro: comando SQL "create index IX1 on "SomeTable" ("UserId") " not supported on Redshift tables.

Isto é porque, tal como outros armazéns de Dados , O Redshift usa armazenamento colunar, e como resultado, muitos dos índices as técnicas (como a adição de índices Não agrupados) utilizadas em outros RDBMS não são aplicáveis.

Você, no entanto, tem a opção de fornecer um único chave de ordenação por tabela, e você pode também influenciar o desempenho com um chave de distribuição para o sharding de dados, e a seleção adequada de compressão codificações para cada coluna para minimizar o armazenamento e e/S gerais.

Por exemplo, no seu caso, pode optar por usar UserId como uma chave de ordenação:

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

Tu talvez queira ler alguns primers como Estes

 41
Author: StuartLC, 2016-06-10 08:06:33

Redshift permitir criar a chave primária

create table user (
id int ,
phone_number int,
primary key(id))

Mas como o Redshift não faz cumprir estas restrições, a chave primária aceita valores duplicados.

Anexo ao artigo sobre esta questão

Http://www.sqlhaven.com/amazon-redshift-what-you-need-to-think-before-defining-primary-key/

 3
Author: user3600910, 2016-04-12 11:05:46

Você pode definir restrições mas será apenas informativo, como a Amazon diz: elas não são aplicadas pela Amazon Redshift. No entanto, chaves primárias e chaves estrangeiras são usadas como dicas de planejamento e elas devem ser declaradas se o seu processo ETL ou algum outro processo em sua aplicação reforça a sua integridade.

Alguns serviços como gasodutos com modo de inserção (substituição já existente) necessitarão de uma chave primária definida na sua tabela.

Para outros fins de desempenho, o A resposta do Stuart está correcta.

 1
Author: Ricardo Edo, 2016-01-06 02:09:02