在查询之外执行静态计算
建议在客户端解析静态计算(简单的数学/字符串运算)。例如,您想查找所有比作者大一岁或小于一岁的人:
MATCH (m:Message)-[:HAS_CREATOR]->(p:person) WHERE p.age <= ($age + 1) RETURN m
在这里,$age 通过参数注入到查询中,然后加上固定值。之后该值与 p.age 进行比较。然而,更好的方法是在客户端进行加法计算,并将计算出的值作为参数 $ageplusone 传递。这有助于查询引擎创建优化的计划,并避免对每个传入的行进行静态计算。根据这些准则,得出的更有效的查询版本是:
MATCH (m:Message)-[:HAS_CREATOR]->(p:person) WHERE p.age <= $ageplusone RETURN m