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

Wykonanie funkcji ORDER BY RAND() zajmuje dużo czasu w mysql

Idę na rozwiązanie.

 SELECT p1.ID, p1.post_content, p1.post_title, p1.post_date, p1.post_name
     FROM posts as p1 JOIN
          (SELECT CEIL(RAND() *
                 (SELECT MAX(ID)
                    FROM posts)) AS id)
          AS p2
  WHERE p1.ID >= p2.id
  ORDER BY p1.ID ASC
  LIMIT 0, 24

To jest szybsze niż moje zapytanie.

MySQL wybierz 10 losowych wierszy z 600K rzędy szybko

Oto rozwiązanie.

Dzięki



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podzapytanie zwraca więcej niż 1 wiersz rozwiązania dla zapytania aktualizującego przy użyciu instrukcji SELECT

  2. operacja usuwania mysql

  3. Jak klastrować systemy równoważenia obciążenia ProxySQL

  4. Zmień wszystkie tabele w bazie danych

  5. WYBIERZ wiersze MySQL, w których dzisiejsza data znajduje się między dwiema kolumnami DATE