搜索索引与二级索引
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
本页介绍了搜索和次级索引的功能。
在搜索索引和次级索引之间进行选择时,请注意,搜索索引应是全文使用情形的默认选择,而次级索引应是所有其他情形的默认选项。下表介绍了何时使用每种类型的索引。
功能 |
二级索引 |
搜索索引 |
排序 |
索引按所有索引键列排序 |
搜索索引最多只能按两个用户控制的 INT64 列进行排序 |
数组 |
不支持将数组用作二级索引的键。 |
搜索索引支持数组索引。文档的所有令牌都位于同一分块中。因此,更改 1 行的事务只会写入一个索引分块。 |
查找 |
按索引键查找只需访问一个分块 |
使用搜索索引的查询通常需要从给定分区的所有分块中读取。唯一的例外是前 k 个模式匹配。 |
多列索引 |
二级索引可以包含多个键列。查询需要按索引键列的前缀查找数据,以便高效执行。 |
搜索索引可以为多列编制索引。查询可以针对索引列的任意子集指定复杂的逻辑表达式(联接、析取、否定),并且仍然可以高效执行 |
索引交集 |
用户可以重写查询以联接多个二级索引。 |
多个编有索引的列的交集会以高效的本地锯齿形联接的形式实现,后跟分布式合并联接(用于合并所有相关分块中的结果)。 |
读取数据 |
SQL 查询或读取 API |
SQL 查询 |
除了语义之外,用于创建搜索索引的 DDL 语句的语法也不同于用于创建二级索引的 DDL 语法:
- 编入索引的列的定义与搜索索引中的排序顺序是分开的。
CREATE
SEARCH INDEX
语句的 ON
子句中的 TOKENLIST
列的顺序无关紧要。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-01-31。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-01-31。"],[],[]]