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

ORDER BY RAND() alternatywa

Jeśli masz kolumnę ID, lepiej zrobić:

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

Logikę wybierania losowego numeru identyfikacyjnego można przenieść na poziom aplikacji.

SELECT * FROM table ORDER BY RAND LIMIT 40

jest bardzo nieefektywny, ponieważ MySQL przetworzy WSZYSTKIE rekordy w tabeli, wykonując pełne skanowanie tabeli we wszystkich wierszach, uporządkuj je losowo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy FCM (firebase cloudmessaging) Token dla jednego urządzenia czy dla jednego konta?

  2. Zmień krok auto_increment pól inkrementacji o

  3. MySQL Workbench nie wyświetla wyników zapytania

  4. Jak ustawić ustawienia regionalne dla bieżącego połączenia w MySQL?

  5. Ile tekstu UTF-8 mieści się w polu tekstowym MySQL?