本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在查詢中儘早放置限制性篩選條件
在所有情況下,查詢中早期放置篩選條件有助於減少查詢計劃必須考慮的中繼解決方案。這表示執行查詢所需的記憶體和運算資源較少。
下列範例可協助您了解這些影響。假設您撰寫查詢,以傳回居住在 中的所有人員India
。查詢的一個版本可以是:
MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WITH country, collect(n.firstName + " " + n.lastName) AS result WHERE country.name = 'India' RETURN result
上述版本的查詢不是實現此使用案例的最佳方式。篩選條件稍後country.name = 'India'
會出現在查詢模式中。它會先收集所有人員及其居住地,然後依國家/地區分組,然後僅篩選 的群組country.name = India
。僅針對居住者進行查詢,India
然後執行收集彙總的最佳方法。
MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WHERE country.name = 'India' RETURN collect(n.firstName + " " + n.lastName) AS result
一般規則是在引入變數後盡快放置篩選條件。