sql >> Database teknologi >  >> RDS >> Mysql

BESTIL EFTER RAND() alternativ

Hvis du har en ID-kolonne, er det bedre at gøre et:

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

Logikken i at vælge det tilfældige id-nummer kan flyttes til applikationsniveauet.

SELECT * FROM table ORDER BY RAND LIMIT 40

er meget ineffektiv, fordi MySQL vil behandle ALLE poster i tabellen ved at udføre en fuld tabelscanning på alle rækkerne, bestil dem tilfældigt.



  1. MySQL-liste over alle dubletter

  2. Henter MySQL med Kivy

  3. SQL-forespørgsel sidder fast i statistiktilstand

  4. Hvordan tilføjer du PostgreSQL Driver som en afhængighed i Maven?