创建并删除索引 Cassandra

Cassandra 创建索引

命令“创建索引”在用户指定的列上创建索引。如果要索引的列的数据已经存在, Cassandra 在“create index”语句执行期间对数据创建索引。

  • 创建索引后, Cassandra 当插入数据时自动索引新数据。
  • 无法在主键上创建索引,因为主键已被索引。
  • 不支持集合上的索引 Cassandra.
  • 如果未对列建立索引, Cassandra 除非该列是主键,否则无法过滤该列。

这就是为什么要过滤列 Cassandra,需要创建索引。

句法

Create index IndexName on KeyspaceName.TableName(ColumnName);

例如:

以下是尝试过滤“dept”列而不创建索引的快照。结果返回了错误。

Cassandra 创建索引

这是在 dept 列上创建索引的快照。

Cassandra 创建索引

Create index DeptIndex on University.Student(dept);

这是成功过滤“dept”列的快照。

Cassandra 创建索引

select * from University.Student where dept='CS';

Cassandra 删除索引

命令“Drop index”删除指定索引。如果在创建索引时未指定索引名称,则索引名称为 TableName_ColumnName_idx。

  • 如果索引不存在,它将返回错误,除非使用 IF EXISTS,否则将返回无操作。
  • 在创建索引期间,您必须使用索引名称指定键空间名称,否则索引将从当前键空间中删除。

句法

Drop index IF EXISTS KeyspaceName.IndexName

例如:

这是执行命令“Drop index”的快照,该命令删除了索引 DeptIndex。

Cassandra 删除索引

drop index IF EXISTS University.DeptIndex;

命令执行成功后,DeptIndex 将从键空间中删除。现在无法按列 dept 过滤数据。