SQL 쿼리를 cypher로 번역했습니다. cypher의 group by
은 암시 적이며 혼란과 쿼리 실행 시간이 길어집니다. 내 SQL 쿼리는 다음과 같습니다cypher에서 효율적으로 그룹화하는 방법은 무엇입니까?
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;
등가 사이퍼 쿼리는 다음과 같습니다
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()
의 느린 실행 중입니다. 수집 기능을 사용하지 않으면 결과별로 그룹을 제공하지 않습니다. 최적화 할 방법이 있습니까? 또는 사이퍼에 그룹 바이어를 더 잘 구현할 수 있습니까?
결론적 인 답변을 원한다면 약간의 대표 데이터를 추가 할 것입니다. 입력과 예상 출력 모두 도움이 될 것입니다. –