

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

當您提交篩選數值或範圍的 Gemlin 周遊時，Neptune 查詢引擎通常必須在執行查詢時使用類型提升。這表示它必須檢查可以保留您正在篩選之值的每種類型的值。

例如，如果您要篩選等於 55 的值，則引擎必須尋找等於 55 的整數、等於 55L 的長整數、等於 55.0 的浮點數等等。每個類型提升都需要對儲存體進行額外查詢，這可能會導致明顯簡單的查詢需要非預期的長時間才能完成。

假設您正在搜尋客戶年齡屬性大於 5 的所有頂點：

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

若要徹底執行該周遊，Neptune 必須擴大查詢，以檢查您要查詢的值可以提升至的每個數值類型。在此情況下，必須針對任何超過 5 的整數、任何超過 5L 的長整數、任何超過 5.0 的浮點數，以及任何超過 5.0 的 double 整數套用 `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))
```