sql >> Databáze >  >> RDS >> Mysql

ORDER BY RAND() alternativa

Pokud máte sloupec ID, je lepší udělat:

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

Logiku výběru náhodného identifikačního čísla lze přesunout na aplikační úroveň.

SELECT * FROM table ORDER BY RAND LIMIT 40

je velmi neefektivní, protože MySQL zpracuje VŠECHNY záznamy v tabulce a provede úplné prohledání tabulky na všech řádcích, seřadí je náhodně.



  1. Jak zřetězit řetězce v SQL

  2. Důrazně zadejte tyto parametry s hodnotou tabulky

  3. Poloměr/nejbližší výsledky – Google Maps API

  4. Spusťte velký SQL skript (s příkazy GO)