Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:przetasować ograniczony wynik zapytania?

Możesz użyć rand() , ale wydajność jest fatalna

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

Sugerowałbym, aby przechowywać listę wszystkich identyfikatorów użytkowników w tablicy serializacji i pamięci podręcznej w pliku na dysku. (okresowa aktualizacja)

Możesz więc cofnąć serializację za pomocą PHP i użyć PHP array_rand wybrać 5 losowych użytkowników.

Aby pobrać pełne informacje, możesz to zrobić

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest optymalny numer zapytania MYSQL w skrypcie php?

  2. W MySQL obliczanie przesunięcia dla strefy czasowej

  3. Konwersja mysql TIME z 24 GODZIN na format AM/PM

  4. Usuwanie znaku punktora Unicode

  5. Php Mysql NOT IN tablica wpływa tylko na pierwszy wynik tablicy