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

Wie kann man den Abruf von Fragen aus der Datenbank randomisieren?

Sie können LIMIT m,n verwenden sowohl die Anzahl der Ergebnisse, die Sie erhalten, zu begrenzen als auch die Ergebnisse um einen bestimmten Betrag zu verrechnen.

Jetzt könnten Sie so etwas tun:

 SELECT * FROM questions WHERE QuizID=1 LIMIT $page,5;

Wo Sie die $page berechnen basierend auf einem $_GET Variable. Aber das wird Ihre Zufälligkeit nicht lösen.

Sie könnten immer RAND($key) säen durch einen bestimmten Schlüssel, den Sie in Ihrer Sitzung speichern, damit Sie ORDER BY RAND($key) können und verwenden Sie die obige Begrenzungstechnik.

Die wahrscheinlich einfachste Implementierung wäre, die gesamte Ergebnismenge abzurufen, sie zu mischen und zwischenzuspeichern. Verwenden Sie dann ein PHP, um nur einen bestimmten Teil des Caches anzuzeigen.

Da dies mit der Paginierung zusammenhängt. Lassen Sie mich Ihnen sagen, LIMIT m,n ist möglicherweise nicht so schnell, wie es sich anhört. Erfahren Sie, wie Sie es verbessern können und lesen Sie mehr über Effiziente Paginierung mit MySQL