更新时间:2023-11-21 GMT+08:00

如何使用二级索引

什么是二级索引

对于GeminiDB Cassandra,Primary Key就是一级索引,查询时通过指定对应Primary Key,就可以直接检索到对应记录。如果需要根据非Primary Key列进行查询,此时需要用到二级索引。

二级索引原理

二级索引的实现其实就是创建一张隐式的表,该表的Primary Key是创建索引的列,该表的值是原表的Primary Key。

假设有一张playlists表,表结构如下:

CREATE TABLE playlists (
id int,
song_id int,
song_order int,
album text,
artist text,
title text,
PRIMARY KEY (id, song_id));

查询结果如下:

图1 查询结果

如果对artist字段建立索引,则索引隐式的表的结构如下所示:

图2 查询结果

其中,artist是索引表的Primary Key,id列、song_id列是索引表的普通列,即原表的Primary Key。

什么场景下不建议使用索引

  • 列中重复值过多

    例如某一表中有一亿条数据,且artist一致,这种情况不建议索引artist列。

  • counter列不能进行索引
  • 频繁更新或者删除的列

如何使用索引

  1. 创建索引

    CREATE INDEX artist_names ON playlists( artist );

    注意:如果原表中有大量数据,会涉及到索引数据的重建,只有当索引数据重建完成以后才能查询索引。

    您可以通过查询系统的“IndexInfo”,查看索引是否重建完成。如果有您创建的索引的名字,表示索引数据已经重建完成。

    图3 查询结果
  2. 通过直接指定索引列,查询索引。
    图4 查询结果

    每张表可以创建多个索引,且索引会影响写入性能。