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

MySQL:Zamíchat omezený výsledek dotazu?

Můžete použít rand() , ale výkon je hrozný

select * from users order by rand() limit 5; <-- slow

Navrhoval bych uložit seznam všech ID uživatelů do serializace pole a mezipaměti do souboru na disku. (pravidelně aktualizováno)

Můžete jej tedy zrušit serializací zpět pomocí PHP a použít PHP array_rand vybrat 5 náhodných uživatelů.

Chcete-li získat úplné informace, můžete to udělat

select * from users where user_id in(...); <-- very fast


  1. Získejte aktuální ID uživatelů z databáze pro použití v nové tabulce

  2. Porovnejte MYSQL při problému spojení

  3. Vyloučení nepodporovaných tabulek k zachycení službou Oracle Streams

  4. Importujte zálohovaný soubor .db SQL Anywhere 10 do MySQL 5.1