搜索索引与二级索引

本页介绍了搜索和次级索引的功能。

在搜索索引和次级索引之间进行选择时,请注意,搜索索引应是全文使用情形的默认选择,而次级索引应是所有其他情形的默认选项。下表介绍了何时使用每种类型的索引。

功能 二级索引 搜索索引
排序 索引按所有索引键列排序 搜索索引最多只能按两个用户控制的 INT64 列进行排序
数组 不支持将数组用作二级索引的键。 搜索索引支持数组索引。文档的所有令牌都位于同一分块中。因此,更改 1 行的事务只会写入一个索引分块。
查找 按索引键查找只需访问一个分块 使用搜索索引的查询通常需要从给定分区的所有分块中读取。唯一的例外是前 k 个模式匹配。
多列索引 二级索引可以包含多个键列。查询需要按索引键列的前缀查找数据,以便高效执行。 搜索索引可以为多列编制索引。查询可以针对索引列的任意子集指定复杂的逻辑表达式(联接、析取、否定),并且仍然可以高效执行
索引交集 用户可以重写查询以联接多个二级索引。 多个编有索引的列的交集会以高效的本地锯齿形联接的形式实现,后跟分布式合并联接(用于合并所有相关分块中的结果)。
读取数据 SQL 查询或读取 API SQL 查询

除了语义之外,用于创建搜索索引的 DDL 语句的语法也不同于用于创建二级索引的 DDL 语法:

  • 编入索引的列的定义与搜索索引中的排序顺序是分开的。
  • CREATE SEARCH INDEX 语句的 ON 子句中的 TOKENLIST 列的顺序无关紧要。

后续步骤