MsvP@habdichliebhasi
Erfahrenes Mitglied
Hallo zusammen,
das nächste Problem steht an. Ebenfalls bei meinen Kommentartabellen.
Ich habe ein arges Performance-Problem, wenn ich versuche alle Antworten auf Kommentare zu filtern.
Das Problem besteht darin, dass meine Tabelle folgendermaßen aufgebaut ist:
ID | ID_ANSWER
Wenn ich einen neuen Kommentar schreibe so bleibt die Spalte ID_ANSWER "NULL".
Antworte ich auf einen vorhanden Kommentar so füllt sich die Spalte ID_ANSWER mit der ID des Hauptkommentars.
Soweit so gut. Wenn ich jetzt aber alle Antworten anderer User zu meinen Kommentaren filtern will, so muss ich eine Unterscheidung zwischen meinen "neuen" Kommentaren und denen, wo ich selbst nur Kommentiert habe setzen, um die richtige ID beim Join für die Antworten zu übergeben.
Ich hatte es jetzt so probiert:
SELECT * FROM comments
JOIN LEFT comments AS answers ON answers.ID_ANSWER = comments.ID OR answers.ID_ANSWER = comments.ID_ANSWER
Durch den OR-Befehl wird die Abfrage aber unheimlich langsam.
Ich habe das ganze auch schon mit CASE probiert - leider das gleiche Ergebnis.
Hat jemand hierfür eine gute Idee? Oder ist meine DB einfach blöd aufgebaut, und ich bräuchte noch eine Spalte, in der so etwas wie eine GLOBAL_ID steht, um mir das OR zu sparen?
Lg
MsvP
das nächste Problem steht an. Ebenfalls bei meinen Kommentartabellen.
Ich habe ein arges Performance-Problem, wenn ich versuche alle Antworten auf Kommentare zu filtern.
Das Problem besteht darin, dass meine Tabelle folgendermaßen aufgebaut ist:
ID | ID_ANSWER
Wenn ich einen neuen Kommentar schreibe so bleibt die Spalte ID_ANSWER "NULL".
Antworte ich auf einen vorhanden Kommentar so füllt sich die Spalte ID_ANSWER mit der ID des Hauptkommentars.
Soweit so gut. Wenn ich jetzt aber alle Antworten anderer User zu meinen Kommentaren filtern will, so muss ich eine Unterscheidung zwischen meinen "neuen" Kommentaren und denen, wo ich selbst nur Kommentiert habe setzen, um die richtige ID beim Join für die Antworten zu übergeben.
Ich hatte es jetzt so probiert:
SELECT * FROM comments
JOIN LEFT comments AS answers ON answers.ID_ANSWER = comments.ID OR answers.ID_ANSWER = comments.ID_ANSWER
Durch den OR-Befehl wird die Abfrage aber unheimlich langsam.
Ich habe das ganze auch schon mit CASE probiert - leider das gleiche Ergebnis.
Hat jemand hierfür eine gute Idee? Oder ist meine DB einfach blöd aufgebaut, und ich bräuchte noch eine Spalte, in der so etwas wie eine GLOBAL_ID steht, um mir das OR zu sparen?
Lg
MsvP