赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 操作指南
  5. 常见问题
  6. 如何选择二级索引和多元索引

如何选择二级索引和多元索引

  • 常见问题
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

本文通过对原生Tablestore查询、二级索引(Secondary Index)和多元索引(Search Index)三种查询场景进行详细分析,为您提供索引的选择建议。

详细分析请参见Tablestore存储和索引引擎详解。

背景信息

表格存储的数据查询依赖主键,主要是通过主键点查询(GetRow)和主键范围查询(GetRange)。如需对属性列进行查询,需要使用Filter功能,在数据量很大的时候效率不高,甚至变成全表扫描。更多信息,请参见读取数据。

在实际业务中,主键查询也常常不能满足需求,而使用Filter在大数据量时效率很低。Tablestore推出了二级索引和多元索引两个功能来弥补原生Tablestore查询方式单一的缺点。

索引介绍

表格存储提供了二级索引和多元索引用于加速数据查询。

二级索引

为数据表创建二级索引后,相当于多了一张Tablestore表,所以索引表的模型与Tablestore表一致。索引表相当于给数据表提供了另外一种排序方式,即对查询条件预先设计了一种数据分布,加快数据查询的效率。更多信息,请参见二级索引简介。

索引表的查询方式仍然是基于主键点查、主键范围查、主键前缀范围查询。为了确保主键的唯一性,表格存储会将数据表的主键列自动补齐到索引表中。

表格存储提供了全局二级索引和本地二级索引两种类型的索引。全局二级索引以异步方式将数据表中被索引的列和主键列的数据自动同步到索引表中,正常情况下同步延迟达到毫秒级别。

为了满足用户的强一致性查询等需求,表格存储推出了本地二级索引。本地二级索引以同步方式将数据表中被索引的列和主键列的数据自动同步到索引表中,当数据写入数据表后,即可从索引表中查询到数据。

全局二级索引和本地二级索引在同步方式、对第一列主键要求、同步延迟和读取一致性方面的区别请参见下表说明。

维度

全局二级索引

本地二级索引

同步方式

异步方式

同步方式

第一列主键要求

可选数据表中的任意主键列或者预定义列

必须和数据表的第一列主键相同

同步延迟

毫秒级别

实时

读取一致性

最终一致性

强一致性

多元索引

多元索引相比数据表主键查询和二级索引,底层增加了倒排索引、多维空间索引等,支持多字段自由组合查询、模糊查询、地理位置查询、全文检索等。更多信息,请参见多元索引简介。

多元索引的功能比二级索引更加丰富,而且一个多元索引可以满足多种维度的查询,支持多种查询条件,因此命名为多元索引。

索引选择

  1. 根据查询条件确定是否需要使用索引。

    一般情况下,以下查询场景无需使用索引。

    • 如果基于主键和主键范围查询的功能已经可以满足业务需求,则不需要建立索引。更多信息,请参见读取数据。

    • 如果对某个范围内进行筛选,范围内数据量不大或者查询频率不高,则可以使用Filter功能,不需要建立索引。更多信息,请参见过滤器。

    • 如果是某种复杂查询,执行频率较低且对延迟不敏感,则可以通过SQL查询表中的数据。更多信息,请参见查询数据。

  2. 如果确定要使用索引,请根据实际查询场景选择二级索引或者多元索引。

    • 二级索引:一个二级索引是一个索引表,类似于数据表,其提供了另一种数据分布方式或者认为是另一种主键排序方式。一个索引对应一种查询条件,预先将符合查询条件的数据排列在一起,查询效率很高。索引表可支撑的数据规模与数据表相同,此外,二级索引的主键设计也同样需要考虑散列问题。

    • 多元索引:一个多元索引是一系列数据结构的组合,其中的每一列都支持建立倒排索引等结构。查询数据时可以按照其中任意一列进行排序。一个多元索引可以支持多种查询条件,不需要对不同查询条件建立多个多元索引。

      相比二级索引,多元索引还支持多条件组合查询、模糊查询、全文索引、地理位置查询等。多元索引本质上是通过各种数据结构加快了数据的筛选过程,功能丰富,但在数据按照某种固定顺序读取的场景上效率不如二级索引。多元索引的查询效率与倒排链长度等因素相关,即查询性能与整个表的全量数据规模有关,在数据规模达到百亿行以上时,建议使用路由键(RoutingKey)对数据进行分片,查询数据时通过指定RoutingKey查询来减少查询涉及到的数据量。

相关文章

多元索引路由字段的使用 2025-04-22 14:38

创建多元索引时,您可以选择部分主键列作为路由字段,在进行索引数据写入时,表格存储会根据路由字段的值计算索引数据的分布位置,路由字段的值相同的记录会被索引到相同的数据分区中。 使用流程

如何选择二级索引和多元索引 2025-04-22 14:38

本文通过对原生Tablestore查询、二级索引(Secondary Index)和多元索引(Search Index)三种查询场景进行详细分析,为您提供索引的选择建议。 详细分析请参见Tablestore存储和索引引擎详解。

使用通配符查询时出现length of field value is longer than 32 for the [WILDCARD_QUERY] query异常 2025-04-22 14:38

当使用通配符查询时出现length of field value is longer than 32 for the [WILDCARD_QUERY] query异常时,请确保查询字符串的长度不超过32字节。 现象

使用多元索引Search接口查不到数据 2025-04-22 14:38

当使用多元索引Search接口查不到数据时,一般是由数据表中的数据未正确同步到多元索引或使用的查询方式错误导致的,请检查数据表中的数据是否已正确同步到多元索引以及使用的查询方式是否正确。 问题现象 使用多元索引Search接口查询数据时,出现查不到数据问题。

使用SQL查询存在数据延迟问题 2025-04-22 14:38

问题现象 在新增或更新数据后,使用SQL查询数据时无法立即获取最新数据,存在一定的延迟现象。 可能原因

为什么使用多元索引翻页查询时Token失效了? 2025-04-22 14:38

Token本身不是字符串,直接使用new String(nextToken)将Token编码为String会造成Token信息丢失,导致Token失效。 如果需要持久化nextToken或者传输nextToken给前端页面,您可以使用Base

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号