CQL(Cassandra Query Language)辅助索引

来源:互联网 发布:杭州恩牛网络 管理 编辑:程序博客网 时间:2024/05/29 06:32

CQL支持在表上创建辅助索引,允许表上的查询使用这些索引。辅助索引由以下定义的名称标识:

index_name ::=  re('[a-zA-Z_0-9]+')

创建索引

在表上创建辅助索引使用CREATE INDEX语句:

create_index_statement ::=  CREATE [ CUSTOM ] INDEX [ IF NOT EXISTS ] [ index_name ]                                ON table_name '(' index_identifier ')'                                [ USING string [ WITH OPTIONS = map_literal ] ]index_identifier       ::=  column_name                           | ( KEYS | VALUES | ENTRIES | FULL ) '(' column_name ')'

例如:

CREATE INDEX userIndex ON NerdMovies (user);CREATE INDEX ON Mutants (abilityId);CREATE INDEX ON users (keys(favs));CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass';CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass' WITH OPTIONS = {'storage': '/mnt/ssd/indexes/'};

CREATE INDEX语句用于为给定表中给定(现有)的列创建新的(自动)辅助索引。如果需要,可以在ON关键字之前指定索引本身的名称。如果列的数据已经存在,那么它将被异步索引。创建索引后,在插入时自动对列的新数据进行索引。

尝试创建已存在的索引将返回错误,除非使用IF NOT EXISTS选项。如果使用它,如果索引已经存在,语句将是无操作。

Map中的索引

在Map上创建索引时,您可以在映射键上添加索引也可以在映射值上添加索引。如果列标识符放在keys()函数中,则索引将位于映射键上,从而允许在WHERE子句中使用CONTAINS KEY否则,索引将在映射值上。

删除索引

删除辅助索引使用DROP INDEX语句:

drop_index_statement ::=  DROP INDEX [ IF EXISTS ] index_name

DROP INDEX语句用于删除现有辅助索引。语句的参数是索引名称,可以可选地指定索引的键空间。

如果索引不存在,则语句将返回错误,除非使用IF EXISTS,在这种情况下,操作是无操作。

0 0
原创粉丝点击