本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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))