Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо MySQL връща същите резултати, докато използва RAND() в оператора SELECT?

Зарода 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql брои в PHP променлива

  2. Производителност на MYSQL OR срещу IN

  3. Как мога да конвертирам файл MDB (Достъп) в MySQL (или обикновен SQL файл)?

  4. Изчисляване на ранг в PHP/MySQL

  5. Как да експортирате и импортирате mysql база данни с нейните данни с помощта на php скрипт?