尽可能指定边缘标签
在模式中指定边缘时,建议尽可能提供边缘标签。考虑以下查询示例,该查询用于将居住在某个城市中的所有人与访问过该城市的所有人链接起来。
MATCH (person)-->(city {country: "US"})-->(anotherPerson) RETURN person, anotherPerson
如果您的图表模型将人们链接到使用多个边缘标签的城市以外的节点,由于未指定结束标签,Neptune 将需要评估其他路径,这些路径稍后将被丢弃。在上面的查询中,由于没有给出边缘标签,因此引擎会先做更多工作,然后筛选出值以获得正确的结果。上述查询的更好版本可能是:
MATCH (person)-[:livesIn]->(city {country: "US"})-[:visitedBy]->(anotherPerson) RETURN person, anotherPerson
这不仅有助于评估,而且使查询计划程序能够创建更好的计划。您甚至可以将此最佳实践与冗余节点标签检查相结合,以避免检查城市标签并将查询编写为:
MATCH (person)-[:livesIn]->({country: "US"})-[:visitedBy]->(anotherPerson) RETURN person, anotherPerson