sql >> Databasteknik >  >> RDS >> Mysql

ORDER BY RAND() alternativ

Om du har en ID-kolumn är det bättre att göra en:

-- 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;

Logiken för att välja det slumpmässiga id-numret kan flyttas till applikationsnivån.

SELECT * FROM table ORDER BY RAND LIMIT 40

är mycket ineffektivt eftersom MySQL kommer att bearbeta ALLA poster i tabellen genom att utföra en fullständig tabellskanning på alla rader, ordna dem slumpmässigt.



  1. Saknar artefakt com.microsoft.sqlserver:sqljdbc4:jar:4.0

  2. Hur fixar man Ora-01427 enkelrads underfråga returnerar mer än en rad i urval?

  3. Ta bort gränssatsen från MySQL Workbench

  4. Skapa valfria beroenden