サイファークエリにページを設定することは可能ですか?例えば、製品のリストですが、私は多くの結果を得ることができるので、すべての結果を表示/取得/キャッシュしたくありません。cypherを使用してクエリ結果をページングする方法は?
私はSQLのオフセット/制限に似た何かを探しています。
サイファースキップ+リミット+オーダーは良いオプションですか? http://docs.neo4j.org/chunked/stable/query-skip.html
サイファークエリにページを設定することは可能ですか?例えば、製品のリストですが、私は多くの結果を得ることができるので、すべての結果を表示/取得/キャッシュしたくありません。cypherを使用してクエリ結果をページングする方法は?
私はSQLのオフセット/制限に似た何かを探しています。
サイファースキップ+リミット+オーダーは良いオプションですか? http://docs.neo4j.org/chunked/stable/query-skip.html
SKIP
およびLIMIT
が実際に行く方法です。 ORDER BY
を使用すると、必然的に、クエリに関連するすべてのノードがサイファーにスキャンされます。 WHERE
句を使用する場合と同じです。パフォーマンスはそれほど悪くはありません。続くよう
ITSは、通常のSQLのように、構文は次のとおりです
match (user:USER_PROFILE)-[USAGE]->uUsage
where HAS(uUsage.impressionsPerHour) AND (uUsage.impressionsPerHour > 100)
ORDER BY user.hashID
SKIP 10
LIMIT 10;
最後のバージョン(2.xの)にこの構文のスーツ
ワンnitpick:using句は、必ずしもへのすべてのノードを強制しませんWHEREスキャンする。 Cypherは、指定された条件に一致する最初の 'LIMIT x'ノードが見つかった後もスキャンを停止します(結局のところ、何か他のものを読み取る必要があるのでしょうか?)。あなたは完全なスキャンを引き起こす 'ORDER BY'について正しいです。 – ean5533
そうです、それは理にかなっています。ありがとう! – tstorms
私はneo4jについてはわかりませんが、ほとんどのデータベース(多くのエンジニアがこれを知らないという奇妙なことです)では、ページ単位のクエリを実行するときに 'ORDER BY'節を使用することが必須です:' ORDER BY 'の場合、データベース実装は、必要と思われる順序(例:パフォーマンスなど)で結果を自由に返すことができます。これは、ページ2のクエリ結果がページ1の結果と何ら連続性を持たないことを意味する。 @ ean5533これはneoでどのように動作するか知っていますか? –