Obere Chiffre ist für das Abrufen aller Kommentare, Antworten und Likes auf diese Kommentare zusammen mit der Überprüfung für einen Benutzer ähnlich wie Benutzer-Feed geschrieben. Die Ausgabe der obigen Abfrage ist unordentlich und wird auf der Anwendungsebene zusammen mit der Paginierung gehandhabt. Irgendwelche Vorschläge, wie man oben genannte Chiffre zusammen mit Seitenumbruch in der Frage selbst optimieren könnte, würde wirklich hilfreich sein.So optimieren Sie unter cypher Abfrage für die Implementierung der Seitennummerierung
Antwort
Das größte Problem bei dieser Abfrage ist, dass Sie keine Aggregation verwenden, um unabhängige Datensegmente zu sammeln, sodass Sie stattdessen Cross-Produkte zwischen ihnen erhalten, was zur Duplizierung der Ergebnisse in Ihren Daten und sehr wahrscheinlich zum Werfen führt Auch das zählt nicht.
Zum Beispiel, in Ihrer Rückkehr, erzeugen Sie Kreuzprodukte zwischen Ihren Kommentaren und Ihren Bewertungen. In der Tat, ich würde wirklich empfehlen, Bewertungen in einer separaten Abfrage zu bekommen, sonst (vorausgesetzt, Sie sammeln Ihre Bewertungen) Sie erhalten die gleichen Bewertungen mit jedem einzelnen Datensatz, und das scheint verschwenderisch.
Hier ist eine alternative Abfrage, die besser für Sie arbeiten soll (für jetzt, in der Abfrage gesammelt Bewertungen zu halten):
MATCH (user:Users {id: 1})
WITH user, [(user)<-[rv:REVIEW]-(rv_user:Users) | rv {.*, reviewer:rv_user}] as reviews
OPTIONAL MATCH (user)<-[:COMMENT]-(co:Comment)<-[ct_by:COMMENTED_BY]-(c_user:Users)
WITH reviews, co, ct_by, c_user
OPTIONAL MATCH (co)<-[:REPLY]-(r_co:Comment)<-[r_co_by:REPLIED_BY]-(r_co_user:Users)
WITH reviews, co, ct_by, c_user, r_co, r_co_by, r_co_user
ORDER BY ct_by.created_at DESC, r_co_by.created_at
SKIP $skip LIMIT $limit
RETURN reviews, co, ct_by, c_user, r_co, r_co_user, size((co)<-[:LIKES]-()) AS co_likes, size((r_co)<-[:LIKES]-()) AS r_co_likes
wir eine Kombination aus Mustern Verständnis verwenden und Kartenprojektion in dem ersten WITH-Klausel zusammen mit dem Gutachter Bewertungen sammeln.
Nachdem wir fertig sind passend, um ct_by
und r_co_by
wir Paginierung mit SKIP und LIMIT anwenden können, wenn Sie diese Parameter versorgen müssen, und rufen Sie die Abfrage für die nächste Seite, in Vielfachen der Grenze übersprungen (man kann ändere diese entsprechend, wenn es das leichter macht).
Wir verwenden die Funktion size()
für ein Muster, um die Anzahl der Vorkommen zu erhalten. Dies ist einfacher, um die Likes zu erhalten, vor allem, da dies aus den Daten des Beziehungsgrads auf dem Knoten selbst stammt und nicht erweitert werden muss (vorausgesetzt dass alle: LIKES Beziehungen sind von: Benutzer).
können wir verbessern noch mehr von hier zum Beispiel für jeden Kommentar der Antwortdaten zu sammeln:
MATCH (user:Users {id: 1})
WITH user, [(user)<-[rv:REVIEW]-(rv_user:Users) | rv {.*, reviewer:rv_user}] as reviews
OPTIONAL MATCH (user)<-[:COMMENT]-(co:Comment)<-[ct_by:COMMENTED_BY]-(c_user:Users)
WITH reviews, co, ct_by, c_user
OPTIONAL MATCH (co)<-[:REPLY]-(r_co:Comment)<-[r_co_by:REPLIED_BY]-(r_co_user:Users)
WITH reviews, co, ct_by, c_user, r_co, r_co_by, r_co_user
ORDER BY ct_by.created_at DESC, r_co_by.created_at
SKIP $skip LIMIT $limit
WITH reviews, co, ct_by, c_user, r_co, r_co_user, size((co)<-[:LIKES]-()) AS co_likes, size((r_co)<-[:LIKES]-()) AS r_co_likes
RETURN reviews, co, ct_by, c_user, co_likes, collect(r_co {.*, replier:r_co_user, likes:r_co_likes}) as replies
- 1. So optimieren Sie die folgende Abfrage
- 2. So optimieren Sie die Abfrage mit SUBSTR
- 3. So optimieren Sie die SQL Server-Abfrage
- 4. Optimieren Cypher Query
- 5. So optimieren Sie die Abfrage, die zu viel Zeit dauert
- 6. So optimieren Sie diese Bereich Abfrage
- 7. So optimieren Sie Berichtsabfragen
- 8. So erstellen Sie die Seitennummerierung im Codegeigner
- 9. So optimieren Sie diese Abfrage für mein Schulprojekt
- 10. Mysql: So optimieren Sie diese Abfrage. für schnellere Ergebnisse
- 11. So optimieren Sie die häufigste MySQL SELECT-Abfrage
- 12. Cypher Abfrage für geordnete Liste
- 13. So blenden Sie die Seitennummerierung der Bootstrap-Tabelle
- 14. Wie wird die Seitennummerierung für die Abfrage in Laravel durchgeführt?
- 15. So optimieren Sie die folgende Methode
- 16. So optimieren Sie die Aggregationsabfrage in elasticsearch
- 17. So erhalten Sie die gesamte Seite der LINQ-Seitennummerierung
- 18. So optimieren Sie Tomcat für Feed ziehen
- 19. neo4j cypher Abfrage für Filterpfade
- 20. Brauchen Sie Hilfe Optimieren der SQL-Abfrage
- 21. So optimieren Sie die Speichernutzung für die Verarbeitung großer Dateien
- 22. Opimzation der kostenbasierten Cypher-Abfrage
- 23. Wie kann ich unter Abfrage optimieren?
- 24. Optimieren einer SQL-Abfrage für die Effizienz
- 25. Neo4j Cypher rekursive Abfrage
- 26. Optimieren Sie die Leistung von SQL-Abfrage
- 27. Cypher Abfrage: - Lassen Sie Apostrope (') mit String in der Abfrage
- 28. Optimieren Hilfe für SQL-Abfrage
- 29. Optimieren Sie T-SQL-Abfrage
- 30. Cypher Abfrage Unterstützung
Auch gibt es eine Möglichkeit für Sie, um die Grafik zu ändern, um Ihre 'created_at' Eigenschaften auf denen sind : Kommentarknoten statt der Beziehungen? Dies würde die Reihenfolge und die Seitennumerierung ermöglichen, ohne dass die Benutzerknoten, die antworten oder kommentieren, erweitert werden müssen. – InverseFalcon