创建并删除索引 Cassandra
Cassandra 创建索引
命令“创建索引”在用户指定的列上创建索引。如果要索引的列的数据已经存在, Cassandra 在“create index”语句执行期间对数据创建索引。
- 创建索引后, Cassandra 当插入数据时自动索引新数据。
- 无法在主键上创建索引,因为主键已被索引。
- 不支持集合上的索引 Cassandra.
- 如果未对列建立索引, Cassandra 除非该列是主键,否则无法过滤该列。
这就是为什么要过滤列 Cassandra,需要创建索引。
句法
Create index IndexName on KeyspaceName.TableName(ColumnName);
例如:
以下是尝试过滤“dept”列而不创建索引的快照。结果返回了错误。
这是在 dept 列上创建索引的快照。
Create index DeptIndex on University.Student(dept);
这是成功过滤“dept”列的快照。
select * from University.Student where dept='CS';
Cassandra 删除索引
命令“Drop index”删除指定索引。如果在创建索引时未指定索引名称,则索引名称为 TableName_ColumnName_idx。
- 如果索引不存在,它将返回错误,除非使用 IF EXISTS,否则将返回无操作。
- 在创建索引期间,您必须使用索引名称指定键空间名称,否则索引将从当前键空间中删除。
句法
Drop index IF EXISTS KeyspaceName.IndexName
例如:
这是执行命令“Drop index”的快照,该命令删除了索引 DeptIndex。
drop index IF EXISTS University.DeptIndex;
命令执行成功后,DeptIndex 将从键空间中删除。现在无法按列 dept 过滤数据。