跳到主要内容

工作表索引

工作表索引用于加快记录查询和排序速度。当工作表数据量较大(通常达到数万甚至数十万条)且查询速度变慢时,可以通过创建索引提升检索性能。

什么是索引

索引可以理解为数据的目录。

例如查阅一本书时,我们通常会先查看目录,再根据页码快速找到对应内容,而不是逐页翻阅。

工作表索引也是同样的原理。系统会根据指定字段建立排序结构,在查询或排序时直接定位符合条件的数据,而无需扫描全部记录,因此可以显著提高查询效率。

如何创建索引

  1. 进入工作表编辑页面,选择 【更多设置】>【检索加速】,点击创建索引

  2. 选择需要建立索引的字段。

    创建文本索引时不能包含多选类型字段;每个索引最多只能包含一个多选类型字段。

  3. 根据需要选择索引类型。

    唯一索引

    建立后,索引字段组合的值不能重复。

    例如将「姓名 + 创建日期」建立唯一索引,则同一个人在同一天只能创建一条记录。

    所有文本字段全文索引(已不再支持)

    早期版本用于为所有文本字段建立全文检索索引,新版本已不再支持创建。

  4. 点击创建索引完成创建。

索引限制

  • 每张工作表最多创建 5 个索引
  • 每张工作表只能存在 1 个文本索引
  • 每个索引最多只能包含 1 个多选类型字段
  • 建立唯一索引后:
    • 字段值不能重复;
    • 如果字段允许为空,则整个工作表只能存在一条空值记录。

索引删除和编辑

可以对已有索引执行以下操作:

  • 添加或删除索引字段
  • 调整字段排序方式
  • 修改索引名称
  • 删除索引

系统自动创建的 index_rowid 索引不支持修改名称。

Q&A

创建唯一索引失败怎么办?

创建唯一索引时,工作表中的已有数据必须满足唯一性要求。

如果存在重复数据,创建会失败。

另外,系统会同时检查:

  • 当前记录
  • 回收站中的记录

如果检查没有重复但仍提示失败,可进入回收站执行立即清空后重新创建。

这是因为超过60天未彻底删除的记录不会在回收站显示,有些批量操作也不会显示在回收站,因此可能这些记录中含有重复值,需要手动点击下一次“立即清空”。

如何利用索引加速检索?

为工作表建立索引,就像是为一本字典建立一个可以用拼音检索的目录。创建适合的索引可以非常有效的加快特定查询条件下的记录检索速度。在创建索引之前,你需要了解创建索引的一些基本原则。

哪些工作表需要创建索引?

建议满足以下情况时创建索引:

  • 工作表数据达到数万或数十万条以上;
  • 查询、筛选或排序已经出现明显延迟;
  • 某些查询条件经常被重复使用。

数据量较小时,一般无需手动创建索引。

什么时候不用建索引

以下情况通常不需要创建索引:

  • 工作表记录较少(如几万条以下);
  • 很少进行筛选或排序;
  • 查询速度已经满足使用需求。

索引并不是越多越好,只有在大数据量、高频查询场景下才能发挥明显效果。

如何选择索引字段?

优先为经常用于以下场景的字段建立索引:

  • 视图筛选
  • 快速筛选
  • 查询条件
  • 排序字段
  • 子表排序
  • 关联记录排序

通常遵循以下原则:

  • 字段重复值越少,索引效果越好。
  • 经常一起查询的字段,建议建立复合索引。

例如:

  • 「商品编号」适合建立索引;
  • 「性别」只有男女两个值,不适合建立索引;
  • 「姓 + 名」组合建立复合索引通常比两个单独索引效果更好。

索引字段排序有什么作用?

对于复合索引,字段顺序及排序方向应尽量与视图中的排序保持一致,否则可能无法利用索引加速查询。

索引越多越好吗?

不是。

索引越多,新增、修改、删除记录时需要同步维护更多索引,会增加写入开销,甚至影响整体性能。

因此,只建议为高频查询场景建立必要的索引。

系统会自动为我建立索引吗?

是的,我们会根据公有云平台每天的访问日志,自动学习和智能分析被频繁使用的查询语句,并自动创建合适的索引。所以,请不要随意修改和删除不是由你自己创建的索引。私有部署环境暂不支持自动创建索引。

多字段索引什么时候生效?

复合索引遵循最左前缀匹配原则

例如建立:

姓名 → 毕业时间 → 专业

则以下查询可以使用索引:

  • 姓名
  • 姓名 + 毕业时间
  • 姓名 + 毕业时间 + 专业

以下查询则无法使用该索引:

  • 毕业时间
  • 专业
  • 毕业时间 + 专业

索引不易命中的常见场景

索引适用范围

针对 10 万行及以上的工作表进行批量查询时,建议提前为查询条件涉及的字段建立索引。

最优查询策略

  • 文本类型的字段优先使用精确查询(等于),当字段取值重复率低且已建索引时,性能通常最佳。

  • 多选类型字段如人员、部门、角色、选项、关联,数组等使用“其中一个”的查询方式,性能通常最佳。

需谨慎使用的查询模式

即使已建立字段索引,以下方式仍可能难以利用索引:

  • 包含否定逻辑的条件

    不等于、不包含、“开头不是”、“结尾不是”

  • 模糊匹配与空值判断

    包含、为空、开头为、结尾为

  • 复合逻辑(或)

    使用 “或” 连接的筛选条件

  • 特殊字段与排序

    • 选项字段若某单一值占比过高(例如 > 30%),索引选择性低

    • 文本字段开启“按拼音排序”时,排序索引通常不生效

优化建议

在超大数据表中,尽量减少上述复杂筛选的使用频次,以降低数据库负载、提升查询响应速度。

尽量将条件改写为等值匹配,并确保相关字段已建立合适的索引。

这篇文档对你有帮助吗?