我正在尝试在Amazon Redshift中创建索引,但收到错误
create index on session_log(UserId);
UserId 是一个整数字段。
UserId
如果尝试在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");
你可能想读几引物像 这些