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

Vrátit náhodné výsledky ( pořadí podle rand() )

Důvodem je řazení podle RAND() může být pomalé, je to, že nutíte databázi, aby skutečně seřadila celou tabulku, než cokoli vrátí. Pouhé snížení zatížení na skenování jedné tabulky je mnohem rychlejší (i když stále poněkud pomalé).

To znamená, že byste mohli získat část cesty tím, že se vyhnete objednávání:

  SELECT *
    FROM my_table
   WHERE RAND() < 0.1
ORDER BY RAND()
   LIMIT 100

Tím se vybere přibližně 1 % všech řádků v tabulce, seřadí je a vrátí prvních 100. Upozorňujeme, že hlavním problémem zde (stejně jako u odpovědi @cmd) je, že si nemůžete být jisti, že dotaz vrátí vůbec nic.

Výše uvedený přístup by měl zahrnovat prohledání celé tabulky (k rozhodnutí, které řádky použít), následované přibližně 1 % řádků. Pokud máte mnoho řádků, můžete procento odpovídajícím způsobem snížit.



  1. Ruby on Rails MySQL #08S01Špatný handshake – downgrade MySQL?

  2. java jdbc mysql konektor:jak vyřešit odpojení po dlouhé době nečinnosti

  3. Co je DTU v Azure SQL Database a jak zjistit, kolik potřebujeme

  4. Získejte první a poslední datum příštího měsíce v MySQL