Hallo teradil,
Ich hab mich mal mit dem thema sufu im hof.php beschäftigt. Is wirklich net so leicht. Hast du mal ausprobiert, ob es besser wird, wenn du die Tabelle in einen eigenen Tablespace legst? Vielleicht werden die Abfragen dann schneller? Ich kann jetzt in eure datenbanken natürlich nicht hinein, aber ich weiß, daß vom eigentlich nur die geschichte mit order by level $order, experience $order, acctid $order schwierigkeiten macht, weil die genaue position damit verschwimmt.
Aber noch mal zu dem thema eigener tablespace. Wenn ihr die Tabelle raus nehmen würdet aus dem (wie auch immer ihr in benannt habt) tablespace und in einen eigenen geben würde, dann sollte auch die abfragen schneller gehen, die den index nicht treffen: gems als beispiel: Select name from ...accounts where gems = $session['user']['gems'] order by level $order, experience $order, acctid $order durchführbar sein. Statt einem tablespacescan über alle tabellen würde er dann wenigstens nur den table durchforsten. Das sollte dann schon wieder gehen. Oder sind die daten wirklich so groß?
Das Ergebnis kannst ja dann durchfetchen(mitzählen) und du hast die genaue position zu jedem Spieler. Ich denke mal, daß war auch dein Ansatz wo du gescheitert bist. Denn jetzt kannst mit dem Count(*) und der Zahl der fetches genau sagen, wo der Platz des Sspielers ist.
Probier das mal aus. Ich hab net so viele daten, daß ich das jetzt testen könnte. Aber du kannst da ja mal einfach nur den table kopieren und das dort testen

via sql abfrage.
Der Rest is dann ja nur mehr Programmieraufwand. Abfragen auf eingabefeld leer oder net, Dann abfrage auf welche $op will mein user und dann befüllst dir je nachdem eine hilfsvariable mit den $session abfragen + detailabfrage aus dem sql oben, oder mit deinem ergebnis SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere AND gems = (select gems from db_prefix("accounts") where name = eingabefeld + detailabfrage. Fertig. Dann noch schauen, auf welche seite der map steht das ergebnis und die geb ich mit dem fetch unten aus. mach ich mit Seite = ergebnis auf hilfsvariable / max. anzahl spieler pro seit
Das gibst dann aus und fertig.
Ps.: Mir is auch bewußt, daß ihr wenn ihr das wirklich macht, alle Programme anpassen müßt wegen dem präfix zu der Tabelle. hm. würde vermutlich bedeuten, daß die entwicklung für alle nicht so leicht wäre, aber wenn ihr wirklich die tabellen alle jeweils in einen tablespace legen würdet, dann wärt ihr viel performanter als jetzt. Das würde vermutlich auch der user am frontend deutlich spüren.
Lg,
Stilgar