Cassandra 二级索引使用指南
【摘要】 1.什么是二级索引对于Cassandra来说,Primary Key 就是一级索引,查询时候可以指定对应Primary Key 就可以直接检索到对应记录。如果需要根据非Primary Key 列进行查询呢? 这个时候就需要用到二级索引。二级索引首先要了解是辅助索引,它的目的就是为了先找到一级索引,然后根据一级索引再找到对应记录。2.二级索引原理二级索引的实现其实就是创建一张隐式的表,该表的P...
1.什么是二级索引
对于Cassandra来说,Primary Key 就是一级索引,查询时候可以指定对应Primary Key 就可以直接检索到对应记录。如果需要根据非Primary Key 列进行查询呢? 这个时候就需要用到二级索引。二级索引首先要了解是辅助索引,它的目的就是为了先找到一级索引,然后根据一级索引再找到对应记录。
2.二级索引原理
二级索引的实现其实就是创建一张隐式的表,该表的Primary Key 是创建索引的列,该表的值是原表的Primary Key.
假设我们有一张playlists 表,表结构如下:
1
2
3
4
5
6
7
8
|
1 CREATE TABLE playlists (
2
id
int,
3 song_id int,
4 song_order int,
5 album text,
6 artist text,
7 title text,
8 PRIMARY KEY (
id
, song_id));
|
查询结果如下:
现在我们如果对 artist字段建立索引,之前提到的索引隐式的表的结构就是下面这样:
其中 artist 就是索引表的 primary key ,列id 是索引表的普通列( 其实就是原表的primary key )
3.什么场景下不建议使用索引
1.列重复值过多
比如上例中的表有一亿条数据,每首歌的artist 都是一样的,这种情况不建议索引artist列
2.counter列不能进行索引
3.频繁更新或者删除的列
4.索引使用方法
索引使用十分简单,执行下面sql就可以创建索引
1
|
CREATE INDEX artist_names ON playlists( artist );
|
注意:如果原表中有大量数据,会涉及到索引数据的重建,只有当所以数据重建完成以后才能进行索引的查询,查看索引是否重建的方法可以通过查询系统的IndexInfo ,如果有我们创建的索引的名字,则表示索引数据已经重建完成,如下图:
索引查询也十分简单,查询时候直接指定索引列即可:
每张表可以创建多个索引,索引会影响写入性能,这点需要注意
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)