von moser |
Bitteschön, gern geschen... 
|
von Yhoko |
Danke, das klingt vielversprechend.
Nach einem Blick in die MySQL-Manual werde ich mich wohl auch mal an Locks machen, ich denke damit ist das Problem ausreichend sauber gelöst  |
von moser |
Ok, folgendes:
1. Du legst eine Tabelle flat_count an:
die befüllst Du wie folgt mit Daten:
INSERT INTO flat_count VALUES SELECT flat_id, count(user_id) FROM flat_users GROUP BY flat_id; |
2. Nun überprüfst Du fortan wie folgt:
Du liest diese Tabelle als "alten Stand" ein und vergleichst Ihn zeilenweise mit dem bislang oft genug geposteten Query. Und nur dort wo unstimmigkeiten auftreten, aktualisierst Du punktgenau eben genau diese Wohnung.
|
von Yhoko |
Es ging mir mehr um die Performance, denn bei mehreren 1000 Wohnungen (= mehrere 2*1000 Querys) geht das ganz schön auf die CPU. |
von moser |
Ach so. Dann entschuldige meine Wortwahl.
Aber ich hatte mal ein ähnliches Problem (da ging es um Scores und Ranking-Scores bei einem Quiz) und habe mich letztendlich dafür entschieden bei den Schleifen zu bleiben. Es mag Dir primitiv erscheinen, aber es hat einen sehr gewichtigen Vorteil:
Dynamik. Denn so schließt Du aus, dass fehlerhafte Updates, Dir deine gesamte Tabelle zerhauen. Zudem: Ein Server verkraftet das schon, ein paar Datensätze aus einer Datenbank zu holen. (Limit sind 2GB Daten pro Tabelle!)
|
|