概述
将GQL查询提交至嬴图系统后,首先需过解析验证其语法。解析完成后,查询将进入优化阶段,嬴图会根据数据库的当前状态评估可能的执行策略。
嬴图的查询优化器将基于数据分布、索引和潜在瓶颈等情况,选择最有效的执行计划。该执行计划将展示操作的最佳顺序,最大限度减少资源消耗并提升查询性能。

GQL查询生命周期
给查询语句加EXPLAIN
或PROFILE
前缀可检查一个查询的执行计划。
EXPLAIN
EXPLAIN
生成查询的执行计划,但不实际运行查询。它提供详细的执行运算符树,概述查询引擎检索所需结果所采取的步骤。
EXPLAIN
MATCH (n:account)
RETURN n.name
LIMIT 10
输出是执行计划的结构化表示,通常称为_explain
。
Return{expr:[n.name] row_type:n.name:STRING}
-> With{exprs:[n_2 as n],row_type:n: NODE}
-> Limit{limit:10,phase:DEFAULT,row_type:n_2: NODE}
-> NodeSearch{alias:n_2,access_method:{condition:@account,index_name:schema,query_type:SK_SCHEMA_SCAN},row_type:n_2: NODE}
PROFILE
PROFILE
会运行查询,返回查询结果以及一个profile_info
表。此表包括使用的执行运算符、每个运算符生成的行数以及每个步骤的耗时等信息。
PROFILE
MATCH (n:account)
RETURN n.name
LIMIT 10
输出的profile_info
示例:
level | op_name | op_id | time_cost | rows |
---|---|---|---|---|
--1 | RETURN | 1 | 17μs | 121 |
----2 | WITH | 2 | 8μs | 121 |
------3 | LIMIT_SKIP | 3 | 1μs | 121 |
--------4 | NODE_SCAN | 4 | 440μs | 121 |