diff --git a/docs-2.0/1.introduction/3.vid.md b/docs-2.0/1.introduction/3.vid.md index e187ebdc2f8..42a93f1e559 100644 --- a/docs-2.0/1.introduction/3.vid.md +++ b/docs-2.0/1.introduction/3.vid.md @@ -42,8 +42,28 @@ VID的生成工作完全交给应用端,有一些通用的建议: - 如果个别记录的主键特别长,但绝大多数记录的主键都很短的情况,不要将`FIXED_STRING()`的`N`设置成超大,这会浪费大量内存和硬盘,也会降低性能。此时可通过BASE64,MD5,hash编码加拼接的方式来生成。 -- 如果用hash方式生成int64 VID,在有10亿个点的情况下,发生碰撞的概率大约是1/10。边的数量与碰撞的概率无关。 +- 如果用hash方式生成int64 VID:在有10亿个点的情况下,发生hash冲突的概率大约是1/10。边的数量与碰撞的概率无关。 ## 定义和修改VID的数据类型 VID的数据类型必须在[创建图空间](../3.ngql-guide/9.space-statements/1.create-space.md)时定义,且一旦定义无法修改。 + +## "查询起始点"(`start vid`)与全局扫描 + +绝大多数情况下,Nebula Graph 的查询语句(`MATCH`, `GO`, `LOOKUP`)的执行计划,必须要通过一定方式找到查询起始点的 VID (`start vid`)。 + +定位 `start vid` 只有两种方式: + +1. 例如 `GO FROM "player100" OVER` 是在语句中显式的指明 `start vid` 是 "player100"; + +2. 例如, `LOOKUP ON player WHERE player.name == "Tony Parker"` 或者 `MATCH (v:player {name:"Tony Parker"}) `,是通过属性 `player.name` 的索引来定位到 `start vid`; + + +!!! caution 不能在没有 `start vid` 情况下进行全局扫描; + + 例如 `match (n) return n;` 会返回错误,因为此时无法定位到 `start vid`;这是一个全局扫描,因此被禁止。 + + + + + diff --git a/docs-2.0/8.service-tuning/4.plan.md b/docs-2.0/8.service-tuning/4.plan.md index fb2ff291441..98cf3169bbf 100644 --- a/docs-2.0/8.service-tuning/4.plan.md +++ b/docs-2.0/8.service-tuning/4.plan.md @@ -3,3 +3,4 @@ Nebula Graph {{ nebula.release }} 实现了基于规则的执行计划。用户无法改变执行计划,无法进行查询的预编译(及相应的计划缓存),无法通过指定索引来加速索引。 要查看执行计划及执行概要,请参考[EXPLAIN和PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md)。 +