Cassandra 文件

版本

您正在檢視預發行版本的說明文件。

次要索引

CQL 支援在表格上建立次要索引,允許對表格的查詢使用這些索引。次要索引由

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

CREATE INDEX

識別CREATE INDEX 陳述式用於為給定表格中給定的 (現有) 欄位建立新的次要索引。如果需要,可以在 ON 關鍵字之前指定索引本身的名稱。

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

如果欄位中已存在資料,它將會非同步地建立索引。建立索引後,欄位的最新資料會在插入時自動建立索引。嘗試建立已存在的索引會傳回錯誤,除非使用 IF NOT EXISTS 選項。如果使用,如果索引已存在,陳述式將不會執行任何操作。

範例:

CREATE INDEX userIndex ON NerdMovies (user);
CREATE INDEX ON Mutants (abilityId);
CREATE INDEX ON users (KEYS(favs));
CREATE INDEX ON users (age) USING 'sai';
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/'};

索引類型

USING 關鍵字選擇性地指定索引類型。有兩種內建類型

  • legacy_local_table - (預設) 傳統次要索引,實作為隱藏的本機表格

  • sai - 「儲存附加」索引,透過最佳化的 SSTable/Memtable 附加索引實作

若要建立自訂索引,必須指定完全限定的類別名稱。

地圖索引鍵

maps <maps> 上建立索引時,您可以索引鍵或值。如果將欄位識別碼置於 keys() 函數中,索引將在映射鍵上,讓您可以在 WHERE 子句中使用 CONTAINS KEY。否則,索引將在映射值上。

DROP INDEX

刪除次要索引時使用 DROP INDEX 陳述式

drop_index_statement::= DROP INDEX [ IF EXISTS ] index_name

DROP INDEX 陳述式用於刪除現有的次要索引。陳述式的引數是索引名稱,可以選擇指定索引的鍵空間。

如果索引不存在,陳述式將傳回錯誤,除非使用 IF EXISTS,這種情況下操作為無動作。