2015-11-06 48 views
0

如何查找Cypher查询的复杂度?Cypher查询复杂度

这是我的查询:

确定一个暗号查询的“成本”是使用 PROFILE关键字先于您的查询的
MATCH (G1:FirstGraph) 
MATCH (G2:SecondGraph {IdRule:G1.IdRule}) 
WHERE G2.VRule<>G1.VRule 
MATCH (R:Rule{IdRule:G1.IdRule}) 
WITH G1,G2, count(R) as NbrOfVers 
MATCH (T:ResultNode) 
WITH T,sum(1-(tofloat(ABS(G2.VRule-G1.VRule))/NbrOfVers)) AS sum 
SET T.SubCorrel = sum 
+0

你是什么意思的复杂性? –

+0

https://en.wikipedia.org/wiki/Analysis_of_algorithms – Kamelio

+0

我认为你指的是算法的复杂性,但在这种情况下没有意义,因为它取决于查询优化器的选择。 –

回答

3

的一种方式。配置文件输出为您提供数据库执行您的查询所需的步骤,并且还会告诉您使用了多少数据库命中。

一般来说,你想尽量减少数据库命中的数量,因为它们相对昂贵。

这将是很好,如果PROFILE(和EXPLAIN)可以输出在big O notation查询的computational complexity,但目前尚未完成。

+0

我试过配置文件。挺有趣的。但是,如何理解命中数以确定查询的性能? – Kamelio

+0

配置文件输出为您提供每步点击次数和点击总数。 – cybersam

+0

谢谢;但是当我们可以说这个查询很差或很好时。我如何解释点击次数? – Kamelio