

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

# Gremlin typePromotion 查询提示
<a name="gremlin-query-hints-typePromotion"></a>

当您提交根据数值或范围进行筛选的 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](gremlin-profile-api.md) 时，您会看到每个数字筛选条件都有多个筛选条件，而且完成所需的时间将比您预期的要长得多。

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

## 语法
<a name="gremlin-query-hints-typePromotion-syntax"></a>

通过向查询添加 `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))
```