Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bewertungssystem in PHP und MySQL

Ich denke, es ist besser, einen anderen Tisch zum "Abstimmen" zu bringen. Die Beziehung zwischen Benutzern und Stimmen ist n zu n, daher sollte eine neue Tabelle erstellt werden. Es sollte etwa so aussehen:

question id (int) | user id (int) | permanent (bool) | timestamp (datetime)

Das permanente Feld kann verwendet werden, damit die Stimmen nach einer bestimmten Zeit bleiben, wie dies bei SO der Fall ist.
Weitere Felder können entsprechend den gewünschten Merkmalen hinzugefügt werden. Da jede Zeile mindestens 16 B benötigt, können Sie bis zu 250 Mio Tabelle vor der Tabelle verwendet 4 GB (Fat32-Grenze, wenn es ein Archiv pro Tabelle gibt, was bei MyISAM und InnoDB der Fall ist).
Außerdem, wie Matthew Scharley in einem Kommentar anmerkt, laden Sie nicht alle Stimmen auf einmal in den Speicher (wie das Abrufen der gesamten Tabelle in einer Ergebnismenge). Sie können Ihre Abfrageergebnisse immer mit der LIMIT-Klausel einschränken.