以下のSQLクエリをcypherに翻訳しました。 cypher内のgroup by
は暗黙的であり、混乱とより多くのクエリ実行時間が発生します。私のSQLクエリは次のとおりです。サイファーで効率的にグループ化するにはどうすればいいですか?
INSERT INTO tmp_build
(result_id, hshld_id, product_id)
SELECT b.result_id, a.hshld_id, b.cluster_id
FROM fact a
INNER JOIN productdata b ON a.product_id = b.barcode
WHERE b.result_id = 1
GROUP BY b.result_id, a.hshld_id, b.cluster_id;
同等CYPHERクエリは次のとおりです。
MATCH (b:PRODUCTDATA {RESULT_ID: 1 })
WITH b
MATCH (b)<-[:CREATES_PRODUCTDATA]-(a:FACT)
WITH b.RESULT_ID as RESULT_ID , collect(b.RESULT_ID) as result, a.HSHLD_ID as HSHLD_ID,
collect(a.HSHLD_ID) as hshld, b.CLUSTER_ID as CLUSTER_ID, collect(b.CLUSTER_ID) as cluster
CREATE (:TMP_BUILD { RESULT_ID:RESULT_ID , HSHLD_ID:HSHLD_ID , PRODUCT_ID:CLUSTER_ID });
このクエリが原因collect()
の遅い実行されています。収集機能を持たないと結果で私にグループを与えていない。それを最適化する方法はありますか?またはサイファーのグループバイヤーのよりよい実装?
決定的な回答を希望される場合は、少しの代表的なデータを追加します。入力と期待出力の両方が役立ちます。 –