admin

如何在Amazon Redshift中创建索引

sql

我正在尝试在Amazon Redshift中创建索引,但收到错误

create index on session_log(UserId);

UserId 是一个整数字段。


阅读 316

收藏
2021-05-10

共1个答案

admin

如果尝试在Redshift表上创建索引(带有名称):

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

您会收到错误消息

执行SQL命令时发生错误:在“ SomeTable”(“ UserId”)上创建索引IX1错误:Redshift表不支持SQL命令“在”
SomeTable“(” UserId“))上创建索引IX1。

这是因为,与其他数据仓库一样,Redshift使用列存储,因此,其他RDBMS中使用的许多索引技术(例如添加非聚集索引)都不适用。

但是,您可以选择为每个表提供一个排序键,还可以使用分配键来分片数据来影响性能,并为每列选择适当的压缩编码,以最大程度地减少存储和I / O开销。

例如,在您的情况下,您可以选择UserId用作排序键:

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

你可能想读几引物
这些

2021-05-10