CQL(Cassandra Query Language)辅助索引

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,在这种情况下,操作是无操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值