Gremlin typePromotion 查詢提示 - Amazon Neptune

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

Gremlin typePromotion 查詢提示

當您提交篩選數值或範圍的 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 時,您會看到每個數值篩選條件有多個篩選條件,而且完成所花費的時間會比您可能預期的時間要長很多。

通常類型提升不是必要的,因為您事先知道只需要找到一個特定類型的值即可。若是這種情況,您可以使用 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))