sql >> Database >  >> RDS >> Mysql

BESTELLEN OP RAND() alternatief

Als je een ID-kolom hebt, kun je beter het volgende doen:

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

De logica van het selecteren van het willekeurige id-nummer kan worden verplaatst naar het applicatieniveau.

SELECT * FROM table ORDER BY RAND LIMIT 40

is erg inefficiënt omdat MySQL ALLE records in de tabel zal verwerken door een volledige tabelscan uit te voeren op alle rijen, en ze willekeurig te rangschikken.



  1. Hoe de decoratie van de resultaatset in Psql-uitvoer te verbergen

  2. Hoe kan ik meerdere tabellen tegelijk wijzigen in mysql?

  3. PHP - Exporteer MySQL-tabellen naar JSON-bestand

  4. Unieke sleutel met NULL's