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

MySQL wybierz losowy wiersz z JOIN z dwóch tabel

To sortowanie Cię spowalnia. Zamiast sortować losowo, po prostu wybierz losowy product_db.unique_id

W zapytaniu zastąp ORDER BY RAND() z:

AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))

używając >= zamiast = w przypadku, gdy unikalny_id został usunięty z bazy danych. Nie tak losowy wynik, jak zamawianie według rand, ale zapytanie zostanie wykonane znacznie szybciej. Jeśli chcesz, możesz uruchomić wiele zapytań za pomocą = dopóki nie zostanie znaleziony wynik i nadal może to być znacznie szybsze niż sortowanie wszystkich tych wyników.

Z wyraźnym JOIN byłoby to:

SELECT product_db.image
FROM product_db
JOIN product_page ON product_db.unique_id = product_page.product_unique_id
WHERE product_page.page_id = 3 
AND product_db.status = 'Online' 
AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))
LIMIT 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CURRENT_TIME Przykłady – MySQL

  2. Python:Konwertuj krotkę na ciąg oddzielony przecinkami

  3. Użyj znacznika czasu (lub daty i godziny) jako części klucza podstawowego (lub części indeksu klastrowego)

  4. Kiedy muszę zakończyć połączenie mysqli (baza danych)?

  5. MYSQL auto_increment_increment