索引概述¶
索引是一种用于加速查询的数据结构。通过创建索引,可以快速访问特定的数据。
GQL 支持以下类型的索引:
| 索引类型 | 主要用途 | 创建方法 |
|---|---|---|
| 主键索引 | 快速定位特定点。 | 定义主键时自动创建 |
| 类型索引 | 快速查找特定点类型或边类型。 | 自动创建 |
| 普通索引 | 基于一个或多个属性快速定位点或边。 | CREATE NORMAL INDEX |
| Vertex-Centric 索引 | 以点为中心快速定位关联边,适用于超级点的边过滤场景。属于普通索引的特殊用法。 | Vertex-Centric 索引 |
| 向量索引 | 快速查找相似向量。 | CREATE VECTOR INDEX |
| 空间索引 | 快速定位空间数据。 | CREATE SPATIAL INDEX |
| 全文索引 | 快速搜索STRING类型属性中的特定词语或短语。 |
CREATE FULLTEXT INDEX |
属性值类型与索引支持¶
下表说明各属性值类型能否用于构成主键,以及支持哪些显式创建的属性索引。✅表示支持,❌表示不支持。主键索引由系统自动创建。类型索引作用于点类型或边类型而非属性值,因此不列入本表。
| 属性值类型 | 可作为主键 | 普通索引(包括 Vertex-Centric 索引) | 向量索引 | 空间索引 | 全文索引 |
|---|---|---|---|---|---|
| 数值 | ✅ | ✅ | ❌ | ❌ | ❌ |
STRING |
✅ | ✅ | ❌ | ❌ | ✅ |
| 布尔 | ✅ | ✅ | ❌ | ❌ | ❌ |
| 时间点类型 | ✅ | ✅ | ❌ | ❌ | ❌ |
DURATION |
✅ | ❌ | ❌ | ❌ | ❌ |
VECTOR |
❌ | ❌ | ✅ | ❌ | ❌ |
GEOGRAPHY |
❌ | ❌ | ❌ | ✅ | ❌ |
LIST |
❌ | ❌ | ❌ | ❌ | ❌ |
SET和MAP |
❌ | ❌ | ❌ | ❌ | ❌ |
Note
LIST、SET、MAP、VECTOR和GEOGRAPHY属性不能用于构成主键。完整的主键限制,请参见 PRIMARY KEY。VECTOR和GEOGRAPHY属性不能创建普通索引,但可以分别创建向量索引和空间索引。DURATION、LIST、SET和MAP属性不支持当前提供的任何显式创建的属性索引。NODE、EDGE、PATH、RECORD、TABLE和NULL不能作为点或边的属性类型,因此不适用本表。
Caution
SET和MAP当前不能用于构成主键。创建图类型时可能不会拒绝此类定义,但不支持写入以这些类型作为主键的点。
除了创建索引,GQL 还提供以下语句与命令用于管理索引:
- DROP INDEX:删除索引。
- SHOW (ALL) INDEXES:展示索引列表。