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

ORDER BY RAND() алтернатива

Ако имате колона за ID, по-добре е да направите:

-- create a variable to hold the random number
SET @rownum := SELECT count(*) FROM table;
SET @row := (SELECT CEIL((rand() * @rownum));

-- use the random number to select on the id column
SELECT * from tablle WHERE id = @row;

Логиката на избора на произволен идентификационен номер може да бъде преместена на ниво приложение.

SELECT * FROM table ORDER BY RAND LIMIT 40

е много неефективно, защото 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 тригер за вмъкване на ред в друга таблица?

  2. TIMESTAMPDIFF() Примери – MySQL

  3. моята sql най-добра практика с php за броене на редове

  4. Изберете текущите месеци, записващи mysql от колоната с времеви печат

  5. И полето NOT IN(NULL) връща празен набор