CREATE INDEX

    标签索引和边类型索引用于和标签、边类型(自身)相关的查询,而不是基于标签上某属性的查询。例如用 LOOKUP 找到某种边类型E的所有的边。

    属性索引目的是基于属性的查询。例如基于属性Age找到Age == 19的所有的点VID。

    如果已经为某个标签T的属性A建立过属性索引i_TA,则没有必要对于标签T额外再建立一个标签索引i_T。这是因为查询引擎可以使用i_TA来替代i_T。边类型索引同理。但是,i_T却不能替代i_TA用于属性查找。

    如何创建全文索引,请参见部署全文索引

    创建索引之前,请确保相关的标签或边类型已经创建。如何创建标签和边类型,请参见和CREATE EDGE

    使用索引必读

    如果必须使用索引,通常按照如下步骤:

    1. 创建索引。

    2. 重建索引

    - 在语句的结果中查找到新的索引。或者,

    - 等待两个心跳周期,例如20秒。如果需要修改心跳间隔,请为所有配置文件修改参数heartbeat_interval_secs

    • index_name:索引名。索引名在一个图空间中必须是唯一的。推荐的命名方式为。

    • prop_name_list:

      • 变长字符串属性创建索引时,必须用prop_name(length)指定索引长度。

      • 为标签或边类型本身创建索引时,忽略prop_name_list

    创建标签/边类型索引

    1. nebula> CREATE TAG INDEX player_index on player();

    为标签或边类型创建索引后,用户可以使用 LOOKUP 语句查找带有该标签的所有点的VID,或者所有该类型的边对应起始点VID、目的点VID、以及rank。详情请参见LOOKUP

    1. nebula> CREATE TAG INDEX player_index_0 on player(name(10));

    上述示例是为所有包含标签player的点创建属性name的索引,索引长度为10。即只使用属性的前10个字符来创建索引。

    1. nebula> CREATE EDGE INDEX follow_index_0 on follow(degree);

    创建复合属性索引

    复合属性索引用于查找一个标签(或者边类型)中的多个属性(的组合)。

    1. # 为标签t的前三个属性创建复合属性索引。
    2. # 注意:无法匹配到索引,因为不是从p1开始。
    3. nebula> LOOKUP ON t WHERE p2 == 1 and p3 == 1;
    4. # 可以匹配到索引。
    5. nebula> LOOKUP ON t WHERE p1 == 1;
    6. # 可以匹配到索引,因为p1和p2是连续的。
    7. nebula> LOOKUP ON t WHERE p1 == 1 and p2 == 1;