J'utilise le code suivant pour renvoyer une ligne aléatoire d'une table. En utilisant le champ 'rand'.Récupération de lignes aléatoires à l'aide d'un index aléatoire et RAND()
SELECT *
FROM imgs
WHERE rand > RAND()
ORDER BY rand ASC
LIMIT 1
est généré « rand » Le champ par MySQL à la création en utilisant quelque chose de similaire à:
INSERT INTO imgs SET rand = RAND()
Pour une raison quelconque les résultats bien que le changement de chaque course sont uniquement les lignes avec un champ très faible « rand » . Il y a certainement une gamme complète avec plus de 7 000 lignes. Coutures fonctionner correctement si je remplace le 'OU rand> RAND()' avec 'OÙ rand> [un nombre compris entre 0-1]'
En plus de cela, il ne s'adapte pas bien à 100K + lignes, pourquoi pas seulement utiliser 'ORDER BY RAND()'? –
Essaie de développer un système très optimisé pour un client dont le besoin pousse régulièrement mon serveur partagé à la limite. La solution évidente serait de générer le flottant aléatoire dans php, mais les coutures plus logique de le faire dans l'instruction SQL. –