在 Google Cloud Spanner 中为 ARRAY<STRING(MAX)> 创建索引

Creating an index on ARRAY<STRING(MAX)> in Google Cloud Spanner

我正在尝试在我的 Google Cloud Spanner 测试数据库中的 AlbumTokens 列上创建索引,但我收到一个神秘的错误,该错误引用了当前未记录的索引选项:

CREATE INDEX AlbumTokens 
ON Albums (
    AlbumTokens
)

>>> Index AlbumTokens references ARRAY AlbumTokens, but is not declared as DISTINCT_ARRAY_ELEMENT index.

这可以吗?如果可以,怎么做?

我正在使用添加了 ARRAY<STRING> 列的示例架构:

CREATE TABLE Singers (
    SingerId INT64 NOT NULL,
    FirstName STRING(1024),
    LastName STRING(1024),
    SingerInfo BYTES(MAX),
) PRIMARY KEY (SingerId)

CREATE TABLE Albums (
    SingerId INT64 NOT NULL,
    AlbumId INT64 NOT NULL,
    AlbumTitle STRING(MAX),
    AlbumTokens ARRAY<STRING(MAX)>,
) PRIMARY KEY (SingerId, AlbumId),
INTERLEAVE IN PARENT Singers ON DELETE CASCADE

您不能使用 Array 作为键来创建索引:

Disallowed types

These cannot be of type ARRAY:

A table's key columns.

An index's key columns.

您可以通过 STORING 关键字将数组包含在索引中 return 数组而不加入主 table,但您不能扫描 i