Gremlin typePromotion 查询提示 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Gremlin typePromotion 查询提示

当您提交根据数值或范围进行筛选的 Gremlin 遍历时,Neptune 查询引擎在执行查询时通常必须使用类型提升。这意味着它必须检查每种类型的值,这些值可能包含您正在筛选的值。

例如,如果要筛选等于 55 的值,则引擎必须查找等于 55 的整数、等于 55L 的长整数、等于 55.0 的浮点数,依此类推。每个类型提升都需要在存储上进行额外查找,这可能会导致看似简单的查询需要意想不到的长时间才能完成。

假设您正在搜索所有客户年龄属性大于 5 的顶点:

g.V().has('customerAge', gt(5))

要彻底执行该遍历,Neptune 必须扩展查询,以检查您要查询的值可以提升到的所有数字类型。在这种情况下,必须对任何大于 5 的整数、任何超过 5L 的长整数、任何超过 5.0 的浮点数以及任何大于 5.0 的双精度数应用 gt 筛选条件。由于每种类型提升都需要在存储空间上进行额外查找,因此,当您针对此查询运行 Gremlin profile API 时,您会看到每个数字筛选条件都有多个筛选条件,而且完成所需的时间将比您预期的要长得多。

通常没有必要进行类型提升,因为您事先知道只需要查找一种特定类型的值即可。在这种情况下,您可以使用 typePromotion 查询提示来关闭类型提升,从而大大加快查询速度。

语法

通过向查询添加 withSideEffect 步骤来指定 typePromotion 查询提示。

g.withSideEffect('Neptune#typePromotion', true or false).gremlin-traversal
注意

所有 Gremlin 查询提示副作用的前缀为 Neptune#

可用值
  • true

  • false

要关闭上述查询的类型提升,您可以使用:

g.withSideEffect('Neptune#typePromotion', false).V().has('customerAge', gt(5))