关闭

CQL(Cassandra Query Language)辅助索引

标签: cassandraCassandra Query Lang索引CQL数据操作CQL辅助索引
387人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:119342次
    • 积分:1772
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:34篇
    • 译文:25篇
    • 评论:7条
    文章分类
    最新评论