Hallo,
und zwar möchte ich gern eine Art Tabelle aufbauen, die mir sagt, das Datensatz X an 7.Position ist.
Ich habe dafür aktuell folgenden SQL-Befehl:
Durch vergleichen (in PHP) der User-ID kann ich die Abfrage "pausieren", indem ich bei Übereinstimmung der eingeloggten User-ID mit der Ausgabe der SQL-Abfrage ein "break;" einfüge und die Platzierung sozusagen über eine Variable immer um eins addiere.
Die obige DB-Abfrage verbraucht aber viel DB-Last. Kann man das Ganze etwas einfacher stricken?
Auf user_id ist ein Index drauf. Und die Abfrage dauert 1,4 Sekunden.
Und zwar macht jeder User_id einen Eintrag. Umso mehr Einträge, desto eine höhere Position hat er.
Beispiel:
User_id 1 hat 4 Einträge.
User_id 2 hat 5 Einträge.
User_id 3 hat 2 Einträge.
User_id 4 hat 8 Einträge.
Also habe ich insgesamt 19 Datensätze.
Loggt sich User_id 4 ein, muss er da stehen haben, das er die 1.Position inne hat. Für die anderen User_id's eben ihre Positionen. Das mache ich mit der obigen Abfrage, die jedoch viel zu lang dauert.
und zwar möchte ich gern eine Art Tabelle aufbauen, die mir sagt, das Datensatz X an 7.Position ist.
Ich habe dafür aktuell folgenden SQL-Befehl:
PHP:
SELECT count(*) AS Anzahl, user_id FROM list GROUP BY user_id ORDER Anzahl DESC
Durch vergleichen (in PHP) der User-ID kann ich die Abfrage "pausieren", indem ich bei Übereinstimmung der eingeloggten User-ID mit der Ausgabe der SQL-Abfrage ein "break;" einfüge und die Platzierung sozusagen über eine Variable immer um eins addiere.
Die obige DB-Abfrage verbraucht aber viel DB-Last. Kann man das Ganze etwas einfacher stricken?
Auf user_id ist ein Index drauf. Und die Abfrage dauert 1,4 Sekunden.

Und zwar macht jeder User_id einen Eintrag. Umso mehr Einträge, desto eine höhere Position hat er.
Beispiel:
User_id 1 hat 4 Einträge.
User_id 2 hat 5 Einträge.
User_id 3 hat 2 Einträge.
User_id 4 hat 8 Einträge.
Also habe ich insgesamt 19 Datensätze.
Loggt sich User_id 4 ein, muss er da stehen haben, das er die 1.Position inne hat. Für die anderen User_id's eben ihre Positionen. Das mache ich mit der obigen Abfrage, die jedoch viel zu lang dauert.
