suede Posté 29 Janvier 2008 Posté 29 Janvier 2008 Bonjour Les requêtes comportant des clauses order by rand etc ne sont pas mise en cache par mysql. En général, il s'agit aussi de requêtes lourdes pour le serveur car toute la table est parcourue. J'ai une requête du genre order by md5 qui utilise la clef de la table concaténée avec la date du jour et l'id de la page comme amorçage du rand() afin d'afficher une photo aléatoire différente sur chaque page (mais toujours la même photo un jour donné sur une page donnée). Cela a le gros inconvénient d'être pas optimal. Quels sont les alternatives? Je pensais à un cron chaque matin ou exécution d'un script à la première page vue dans la journée et enregistrement des correspondances pages/photos dans un fichier à inclure, cela pour toute les photos : on fait un tirage aléatoire et ensuite on affecte dans l'ordre à chaque page? Un fichier pour toutes les pages ? Un fichier par page (plus facile à gérer de nouvelles pages) ? D'autres solutions? François
Prélude Posté 29 Janvier 2008 Posté 29 Janvier 2008 Bonjour, Je vais peut-être dire une bêtise, mais pourquoi ne pas ouvrir une table simplement sans tri et de choisir l'enregistrement n en aléatoire ?!
captain_torche Posté 29 Janvier 2008 Posté 29 Janvier 2008 Et en mettant un seed pour initialiser le random, la requête serait-elle mise en cache ? SELECT * FROM table ORDER BY RAND(CURDATE()) LIMIT 1 Pourrais-tu donner le lien qui parle de la mise en cache ?
suede Posté 29 Janvier 2008 Auteur Posté 29 Janvier 2008 Ici: http://dev.mysql.com/doc/refman/5.0/fr/query-cache-how.html Si tu as un rand(), pas de cache. J'ai un seed dans mon rand qui dépend de idphoto (le champs que je recupère), dayofyear(). Le but est de changer chaque jour les photos mises en bas de page mais que pour une page donnée, un jour donné, ce soit toujours la même photo. Une possibilité aussi est Aller chercher le nombre d'enregistrement Choisir en php au hasard avec un seed dépendant de la page (donc constant) une valeur inférieur à l'enregistrement Faire la requete sql avec cette valeur. François
Prélude Posté 30 Janvier 2008 Posté 30 Janvier 2008 Une possibilité aussi est Aller chercher le nombre d'enregistrement Choisir en php au hasard avec un seed dépendant de la page (donc constant) une valeur inférieur à l'enregistrement Faire la requete sql avec cette valeur. C'est ce que je disais...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant