Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como randomizar a recuperação da pergunta do banco de dados?


Você pode usar LIMIT m,n para limitar o número de resultados obtidos e compensar os resultados por um determinado valor.

Agora você poderia fazer algo como:
 SELECT * FROM questions WHERE QuizID=1 LIMIT $page,5;

Onde você calcula a $page baseado em um $_GET variável. Mas isso não resolverá sua aleatoriedade.

Você sempre pode propagar RAND($key) por uma determinada chave que você salva em sua sessão para poder ORDER BY RAND($key) e use a técnica de limite acima.

Provavelmente, o mais simples de implementar seria obter todo o conjunto de resultados, embaralhá-lo e armazená-lo em cache. Em seguida, use um php para mostrar apenas um pedaço específico do cache.

Uma vez que isso está relacionado à paginação. Deixe-me dizer-lhe, LIMIT m,n pode não ser tão rápido quanto parece. Saiba como melhorá-lo e leia mais sobre Paginação eficiente usando MySQL