Зарода Rand()
MySQL използва системния часовник за задаване на RAND()
когато няма втора стойност. Стойността на началната стойност е в микросекунди и не мога да възпроизведа проблема на RAND()
произвеждат една и съща стойност два пъти, както описвате.
Ако отворите MySQL Workbench и изпълните два оператора едновременно. Резултатът е различен за всеки.
SELECT RAND();
SELECT RAND();
Когато отворите няколко раздела и получите едни и същи резултати. Вероятно е проблем с кеширането, но заявявате, че подпечатвате URL адреса, за да предотвратите кеширането. Затова активирайте SQL регистрирането на сървъра и проверете дали се извикват нови заявки.
Изпълнение на Rand()
ORDER BY RAND()
е бавен, защото изисква MySQL, за да прочете цялата таблица. Дори ORDER BY RAND() LIMIT 1
все още изисква MySQL, за да прочете цялата таблица.
АКТУАЛИЗИРАНЕ:
Можете да видите каква е произволната стойност, която SQL генерира.
$query = "SELECT *, RAND() AS `X`
FROM customers
WHERE customer_group='consumables' AND customer_updated < DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY `X`
LIMIT 10";
Това ще включва колоната X
за всеки ред. Случайната стойност, използвана за подреждане на заявката. Добавете това към изхода и вижте дали всеки браузър е наистина връщане на същите набори от резултати от MySQL.